From 7461d6834b90936a38e80cc4bac2c10ff97499a0 Mon Sep 17 00:00:00 2001 From: Cory Hall <43035978+corymhall@users.noreply.github.com> Date: Mon, 5 Aug 2024 09:46:54 -0400 Subject: [PATCH] Upstream v5.61.0 (#4341) closes #4340 --- examples/go.mod | 41 +- examples/go.sum | 82 +- ...uster-certificate_authorities-plural.patch | 4 +- ...lt-descriptions-to-Managed-by-Pulumi.patch | 4 +- ...-Do-not-compute-tags_all-at-TF-level.patch | 8 +- ...r-implement-default_addons_to_remove.patch | 4 +- ...isableTagSchemaCheck-for-PF-provider.patch | 4 +- ...l-fast-when-PF-resources-are-dropped.patch | 4 +- patches/0038-Restore-legacy-bucket.patch | 14 +- patches/0045-restore-ECRConn.patch | 6 +- patches/0047-restore-ecr-NewConn.patch | 4 +- ...omputed-for-chatbot-timestreaminflux.patch | 45 + .../pulumi-resource-aws/bridge-metadata.json | 102 +- .../runtime-bridge-metadata.json | 2 +- provider/cmd/pulumi-resource-aws/schema.json | 1732 +++++++++++++++-- provider/go.mod | 41 +- provider/go.sum | 82 +- provider/replacements.json | 4 + provider/resources.go | 9 + sdk/dotnet/AppSync/GraphQLApi.cs | 24 + .../GraphQLApiEnhancedMetricsConfigArgs.cs | 38 + .../GraphQLApiEnhancedMetricsConfigGetArgs.cs | 38 + .../GraphQLApiEnhancedMetricsConfig.cs | 42 + .../SlackChannelConfigurationTimeoutsArgs.cs | 38 + ...lackChannelConfigurationTimeoutsGetArgs.cs | 38 + .../TeamsChannelConfigurationTimeoutsArgs.cs | 38 + ...eamsChannelConfigurationTimeoutsGetArgs.cs | 38 + .../SlackChannelConfigurationTimeouts.cs | 42 + .../TeamsChannelConfigurationTimeouts.cs | 42 + .../Chatbot/SlackChannelConfiguration.cs | 380 ++++ .../Chatbot/TeamsChannelConfiguration.cs | 413 ++++ .../Inputs/DomainIndexFieldArgs.cs | 2 +- .../Inputs/DomainIndexFieldGetArgs.cs | 2 +- .../CloudSearch/Outputs/DomainIndexField.cs | 2 +- sdk/dotnet/Config/Config.cs | 4 + sdk/dotnet/DataZone/Glossary.cs | 304 +++ .../InstanceInstanceMarketOptionsArgs.cs | 2 +- .../InstanceInstanceMarketOptionsGetArgs.cs | 2 +- .../Outputs/InstanceInstanceMarketOptions.cs | 2 +- sdk/dotnet/Ec2/Vpc.cs | 6 +- sdk/dotnet/Ec2/VpcIpamPoolCidrAllocation.cs | 2 +- sdk/dotnet/Ec2/VpcIpv6CidrBlockAssociation.cs | 60 +- .../Ecr/GetRepositoryCreationTemplate.cs | 199 ++ ...tionTemplateEncryptionConfigurationArgs.cs | 32 + ...nTemplateEncryptionConfigurationGetArgs.cs | 32 + ...onTemplateEncryptionConfigurationResult.cs | 35 + ...CreationTemplateEncryptionConfiguration.cs | 35 + sdk/dotnet/Ecr/RepositoryCreationTemplate.cs | 381 ++++ sdk/dotnet/Eks/Cluster.cs | 18 + sdk/dotnet/Eks/GetCluster.cs | 7 + .../Eks/Inputs/ClusterUpgradePolicyArgs.cs | 26 + .../Eks/Inputs/ClusterUpgradePolicyGetArgs.cs | 26 + .../Eks/Outputs/ClusterUpgradePolicy.cs | 27 + .../Outputs/GetClusterUpgradePolicyResult.cs | 27 + .../ElastiCache/UserGroupAssociation.cs | 4 - sdk/dotnet/Inputs/ProviderEndpointArgs.cs | 6 + .../Pipes/Inputs/PipeLogConfigurationArgs.cs | 12 + .../Inputs/PipeLogConfigurationGetArgs.cs | 12 + .../Pipes/Outputs/PipeLogConfiguration.cs | 7 + sdk/dotnet/Pipes/Pipe.cs | 45 + sdk/dotnet/Rds/Cluster.cs | 72 +- .../Inputs/ClusterRestoreToPointInTimeArgs.cs | 10 +- .../ClusterRestoreToPointInTimeGetArgs.cs | 10 +- sdk/dotnet/Rds/Instance.cs | 18 + .../Outputs/ClusterRestoreToPointInTime.cs | 11 +- sdk/dotnet/S3/BucketNotification.cs | 2 +- sdk/dotnet/Sagemaker/GetPrebuiltEcrImage.cs | 4 +- sdk/dotnet/Sfn/Activity.cs | 46 + .../ActivityEncryptionConfigurationArgs.cs | 38 + .../ActivityEncryptionConfigurationGetArgs.cs | 38 + ...StateMachineEncryptionConfigurationArgs.cs | 38 + ...teMachineEncryptionConfigurationGetArgs.cs | 38 + .../ActivityEncryptionConfiguration.cs | 42 + .../StateMachineEncryptionConfiguration.cs | 42 + sdk/dotnet/Sfn/StateMachine.cs | 58 + sdk/dotnet/TimestreamInfluxDB/DbInstance.cs | 726 +++++++ .../DbInstanceLogDeliveryConfigurationArgs.cs | 26 + ...InstanceLogDeliveryConfigurationGetArgs.cs | 26 + ...eliveryConfigurationS3ConfigurationArgs.cs | 34 + ...veryConfigurationS3ConfigurationGetArgs.cs | 34 + .../Inputs/DbInstanceTimeoutsArgs.cs | 38 + .../Inputs/DbInstanceTimeoutsGetArgs.cs | 38 + .../DbInstanceLogDeliveryConfiguration.cs | 27 + ...LogDeliveryConfigurationS3Configuration.cs | 37 + .../Outputs/DbInstanceTimeouts.cs | 42 + sdk/dotnet/TimestreamInfluxDB/README.md | 1 + sdk/dotnet/WafV2/WebAcl.cs | 18 + sdk/go/aws/appsync/graphQLApi.go | 27 + sdk/go/aws/appsync/pulumiTypes.go | 179 ++ sdk/go/aws/chatbot/init.go | 51 + sdk/go/aws/chatbot/pulumiTypes.go | 375 ++++ .../aws/chatbot/slackChannelConfiguration.go | 463 +++++ .../aws/chatbot/teamsChannelConfiguration.go | 492 +++++ sdk/go/aws/cloudsearch/pulumiTypes.go | 6 +- sdk/go/aws/config/pulumiTypes.go | 9 + sdk/go/aws/datazone/glossary.go | 446 +++++ sdk/go/aws/datazone/init.go | 7 + sdk/go/aws/ec2/pulumiTypes.go | 8 +- sdk/go/aws/ec2/vpc.go | 12 +- sdk/go/aws/ec2/vpcIpamPoolCidrAllocation.go | 6 +- sdk/go/aws/ec2/vpcIpv6CidrBlockAssociation.go | 79 +- .../aws/ecr/getRepositoryCreationTemplate.go | 182 ++ sdk/go/aws/ecr/init.go | 7 + sdk/go/aws/ecr/pulumiTypes.go | 220 +++ sdk/go/aws/ecr/repositoryCreationTemplate.go | 454 +++++ sdk/go/aws/eks/cluster.go | 15 + sdk/go/aws/eks/getCluster.go | 7 + sdk/go/aws/eks/pulumiTypes.go | 242 +++ .../aws/elasticache/userGroupAssociation.go | 4 - sdk/go/aws/pipes/pipe.go | 48 + sdk/go/aws/pipes/pulumiTypes.go | 19 + sdk/go/aws/pulumiTypes.go | 9 + sdk/go/aws/rds/cluster.go | 81 +- sdk/go/aws/rds/instance.go | 15 + sdk/go/aws/rds/pulumiTypes.go | 29 +- sdk/go/aws/s3/bucketNotification.go | 2 +- sdk/go/aws/sagemaker/getPrebuiltEcrImage.go | 4 +- sdk/go/aws/sfn/activity.go | 50 + sdk/go/aws/sfn/pulumiTypes.go | 358 ++++ sdk/go/aws/sfn/stateMachine.go | 66 + sdk/go/aws/timestreaminfluxdb/dbInstance.go | 807 ++++++++ sdk/go/aws/timestreaminfluxdb/init.go | 44 + sdk/go/aws/timestreaminfluxdb/pulumiTypes.go | 507 +++++ sdk/go/aws/wafv2/webAcl.go | 15 + .../com/pulumi/aws/appsync/GraphQLApi.java | 19 + .../pulumi/aws/appsync/GraphQLApiArgs.java | 46 + .../GraphQLApiEnhancedMetricsConfigArgs.java | 165 ++ .../aws/appsync/inputs/GraphQLApiState.java | 46 + .../GraphQLApiEnhancedMetricsConfig.java | 104 + .../chatbot/SlackChannelConfiguration.java | 321 +++ .../SlackChannelConfigurationArgs.java | 441 +++++ .../chatbot/TeamsChannelConfiguration.java | 338 ++++ .../TeamsChannelConfigurationArgs.java | 555 ++++++ .../SlackChannelConfigurationState.java | 592 ++++++ ...SlackChannelConfigurationTimeoutsArgs.java | 157 ++ .../TeamsChannelConfigurationState.java | 629 ++++++ ...TeamsChannelConfigurationTimeoutsArgs.java | 157 ++ .../SlackChannelConfigurationTimeouts.java | 99 + .../TeamsChannelConfigurationTimeouts.java | 99 + .../inputs/DomainIndexFieldArgs.java | 8 +- .../cloudsearch/outputs/DomainIndexField.java | 4 +- .../pulumi/aws/config/inputs/Endpoints.java | 21 + .../com/pulumi/aws/datazone/Glossary.java | 298 +++ .../com/pulumi/aws/datazone/GlossaryArgs.java | 226 +++ .../aws/datazone/inputs/GlossaryState.java | 219 +++ .../src/main/java/com/pulumi/aws/ec2/Vpc.java | 4 +- .../main/java/com/pulumi/aws/ec2/VpcArgs.java | 8 +- .../aws/ec2/VpcIpamPoolCidrAllocation.java | 6 +- .../aws/ec2/VpcIpv6CidrBlockAssociation.java | 47 +- .../ec2/VpcIpv6CidrBlockAssociationArgs.java | 112 +- .../InstanceInstanceMarketOptionsArgs.java | 8 +- .../VpcIpv6CidrBlockAssociationState.java | 99 +- .../com/pulumi/aws/ec2/inputs/VpcState.java | 8 +- .../InstanceInstanceMarketOptions.java | 4 +- .../java/com/pulumi/aws/ecr/EcrFunctions.java | 171 ++ .../aws/ecr/RepositoryCreationTemplate.java | 307 +++ .../ecr/RepositoryCreationTemplateArgs.java | 389 ++++ .../GetRepositoryCreationTemplateArgs.java | 125 ++ ...etRepositoryCreationTemplatePlainArgs.java | 104 + ...onTemplateEncryptionConfigurationArgs.java | 120 ++ .../RepositoryCreationTemplateState.java | 419 ++++ ...eationTemplateEncryptionConfiguration.java | 81 + .../GetRepositoryCreationTemplateResult.java | 289 +++ ...eationTemplateEncryptionConfiguration.java | 78 + .../main/java/com/pulumi/aws/eks/Cluster.java | 15 + .../java/com/pulumi/aws/eks/ClusterArgs.java | 38 + .../pulumi/aws/eks/inputs/ClusterState.java | 38 + .../eks/inputs/ClusterUpgradePolicyArgs.java | 83 + .../aws/eks/outputs/ClusterUpgradePolicy.java | 57 + .../aws/eks/outputs/GetClusterResult.java | 27 + .../eks/outputs/GetClusterUpgradePolicy.java | 58 + .../aws/elasticache/UserGroupAssociation.java | 4 - .../aws/inputs/ProviderEndpointArgs.java | 37 + .../main/java/com/pulumi/aws/pipes/Pipe.java | 58 + .../inputs/PipeLogConfigurationArgs.java | 48 + .../pipes/outputs/PipeLogConfiguration.java | 25 + .../main/java/com/pulumi/aws/rds/Cluster.java | 54 +- .../java/com/pulumi/aws/rds/ClusterArgs.java | 135 +- .../java/com/pulumi/aws/rds/Instance.java | 14 + .../java/com/pulumi/aws/rds/InstanceArgs.java | 37 + .../ClusterRestoreToPointInTimeArgs.java | 51 +- .../pulumi/aws/rds/inputs/ClusterState.java | 135 +- .../pulumi/aws/rds/inputs/InstanceState.java | 37 + .../outputs/ClusterRestoreToPointInTime.java | 36 +- .../com/pulumi/aws/s3/BucketNotification.java | 2 +- .../inputs/GetPrebuiltEcrImageArgs.java | 8 +- .../inputs/GetPrebuiltEcrImagePlainArgs.java | 6 +- .../java/com/pulumi/aws/sfn/Activity.java | 60 + .../java/com/pulumi/aws/sfn/ActivityArgs.java | 38 + .../java/com/pulumi/aws/sfn/StateMachine.java | 73 + .../com/pulumi/aws/sfn/StateMachineArgs.java | 38 + .../ActivityEncryptionConfigurationArgs.java | 158 ++ .../pulumi/aws/sfn/inputs/ActivityState.java | 38 + ...ateMachineEncryptionConfigurationArgs.java | 158 ++ .../aws/sfn/inputs/StateMachineState.java | 38 + .../ActivityEncryptionConfiguration.java | 100 + .../StateMachineEncryptionConfiguration.java | 100 + .../aws/timestreaminfluxdb/DbInstance.java | 648 ++++++ .../timestreaminfluxdb/DbInstanceArgs.java | 679 +++++++ ...bInstanceLogDeliveryConfigurationArgs.java | 83 + ...iveryConfigurationS3ConfigurationArgs.java | 134 ++ .../inputs/DbInstanceState.java | 892 +++++++++ .../inputs/DbInstanceTimeoutsArgs.java | 157 ++ .../DbInstanceLogDeliveryConfiguration.java | 57 + ...gDeliveryConfigurationS3Configuration.java | 86 + .../outputs/DbInstanceTimeouts.java | 99 + .../java/com/pulumi/aws/wafv2/WebAcl.java | 14 + .../java/com/pulumi/aws/wafv2/WebAclArgs.java | 37 + .../pulumi/aws/wafv2/inputs/WebAclState.java | 37 + sdk/nodejs/appsync/graphQLApi.ts | 20 + sdk/nodejs/chatbot/index.ts | 27 + .../chatbot/slackChannelConfiguration.ts | 293 +++ .../chatbot/teamsChannelConfiguration.ts | 321 +++ sdk/nodejs/datazone/glossary.ts | 237 +++ sdk/nodejs/datazone/index.ts | 8 + sdk/nodejs/ec2/vpc.ts | 6 +- sdk/nodejs/ec2/vpcIpamPoolCidrAllocation.ts | 2 +- sdk/nodejs/ec2/vpcIpv6CidrBlockAssociation.ts | 53 +- .../ecr/getRepositoryCreationTemplate.ts | 123 ++ sdk/nodejs/ecr/index.ts | 13 + sdk/nodejs/ecr/repositoryCreationTemplate.ts | 280 +++ sdk/nodejs/eks/cluster.ts | 14 + sdk/nodejs/eks/getCluster.ts | 4 + .../elasticache/userGroupAssociation.ts | 4 - sdk/nodejs/index.ts | 2 + sdk/nodejs/pipes/pipe.ts | 27 + sdk/nodejs/rds/cluster.ts | 60 +- sdk/nodejs/rds/instance.ts | 14 + sdk/nodejs/s3/bucketNotification.ts | 2 +- sdk/nodejs/sagemaker/getPrebuiltEcrImage.ts | 4 +- sdk/nodejs/sfn/activity.ts | 37 + sdk/nodejs/sfn/stateMachine.ts | 46 + sdk/nodejs/timestreaminfluxdb/dbInstance.ts | 520 +++++ sdk/nodejs/timestreaminfluxdb/index.ts | 25 + sdk/nodejs/tsconfig.json | 7 + sdk/nodejs/types/input.ts | 150 +- sdk/nodejs/types/output.ts | 170 +- sdk/nodejs/wafv2/webAcl.ts | 14 + sdk/python/pulumi_aws/__init__.py | 43 + sdk/python/pulumi_aws/_inputs.py | 20 + sdk/python/pulumi_aws/appsync/_inputs.py | 71 + sdk/python/pulumi_aws/appsync/graph_ql_api.py | 61 + sdk/python/pulumi_aws/appsync/outputs.py | 62 + sdk/python/pulumi_aws/chatbot/__init__.py | 4 + sdk/python/pulumi_aws/chatbot/_inputs.py | 169 ++ sdk/python/pulumi_aws/chatbot/outputs.py | 107 + .../chatbot/slack_channel_configuration.py | 749 +++++++ .../chatbot/teams_channel_configuration.py | 841 ++++++++ sdk/python/pulumi_aws/cloudsearch/_inputs.py | 6 +- sdk/python/pulumi_aws/cloudsearch/outputs.py | 4 +- sdk/python/pulumi_aws/config/outputs.py | 12 + sdk/python/pulumi_aws/datazone/__init__.py | 1 + sdk/python/pulumi_aws/datazone/glossary.py | 521 +++++ sdk/python/pulumi_aws/ec2/_inputs.py | 6 +- sdk/python/pulumi_aws/ec2/outputs.py | 4 +- sdk/python/pulumi_aws/ec2/vpc.py | 14 +- .../ec2/vpc_ipam_pool_cidr_allocation.py | 2 +- .../ec2/vpc_ipv6_cidr_block_association.py | 169 +- sdk/python/pulumi_aws/ecr/__init__.py | 2 + sdk/python/pulumi_aws/ecr/_inputs.py | 54 + .../ecr/get_repository_creation_template.py | 229 +++ sdk/python/pulumi_aws/ecr/outputs.py | 81 + .../ecr/repository_creation_template.py | 687 +++++++ sdk/python/pulumi_aws/eks/_inputs.py | 34 + sdk/python/pulumi_aws/eks/cluster.py | 47 + sdk/python/pulumi_aws/eks/get_cluster.py | 15 +- sdk/python/pulumi_aws/eks/outputs.py | 56 + .../elasticache/user_group_association.py | 8 - sdk/python/pulumi_aws/pipes/_inputs.py | 20 + sdk/python/pulumi_aws/pipes/outputs.py | 14 + sdk/python/pulumi_aws/pipes/pipe.py | 50 + sdk/python/pulumi_aws/rds/_inputs.py | 59 +- sdk/python/pulumi_aws/rds/cluster.py | 183 +- sdk/python/pulumi_aws/rds/instance.py | 47 + sdk/python/pulumi_aws/rds/outputs.py | 43 +- .../pulumi_aws/s3/bucket_notification.py | 4 +- .../sagemaker/get_prebuilt_ecr_image.py | 4 +- sdk/python/pulumi_aws/sfn/_inputs.py | 148 ++ sdk/python/pulumi_aws/sfn/activity.py | 87 + sdk/python/pulumi_aws/sfn/outputs.py | 126 ++ sdk/python/pulumi_aws/sfn/state_machine.py | 109 ++ .../pulumi_aws/timestreaminfluxdb/__init__.py | 10 + .../pulumi_aws/timestreaminfluxdb/_inputs.py | 187 ++ .../timestreaminfluxdb/db_instance.py | 1291 ++++++++++++ .../pulumi_aws/timestreaminfluxdb/outputs.py | 152 ++ sdk/python/pulumi_aws/wafv2/web_acl.py | 47 + upstream | 2 +- 287 files changed, 31666 insertions(+), 670 deletions(-) create mode 100644 patches/0065-Patch-tags_all-Computed-for-chatbot-timestreaminflux.patch create mode 100644 sdk/dotnet/AppSync/Inputs/GraphQLApiEnhancedMetricsConfigArgs.cs create mode 100644 sdk/dotnet/AppSync/Inputs/GraphQLApiEnhancedMetricsConfigGetArgs.cs create mode 100644 sdk/dotnet/AppSync/Outputs/GraphQLApiEnhancedMetricsConfig.cs create mode 100644 sdk/dotnet/Chatbot/Inputs/SlackChannelConfigurationTimeoutsArgs.cs create mode 100644 sdk/dotnet/Chatbot/Inputs/SlackChannelConfigurationTimeoutsGetArgs.cs create mode 100644 sdk/dotnet/Chatbot/Inputs/TeamsChannelConfigurationTimeoutsArgs.cs create mode 100644 sdk/dotnet/Chatbot/Inputs/TeamsChannelConfigurationTimeoutsGetArgs.cs create mode 100644 sdk/dotnet/Chatbot/Outputs/SlackChannelConfigurationTimeouts.cs create mode 100644 sdk/dotnet/Chatbot/Outputs/TeamsChannelConfigurationTimeouts.cs create mode 100644 sdk/dotnet/Chatbot/SlackChannelConfiguration.cs create mode 100644 sdk/dotnet/Chatbot/TeamsChannelConfiguration.cs create mode 100644 sdk/dotnet/DataZone/Glossary.cs create mode 100644 sdk/dotnet/Ecr/GetRepositoryCreationTemplate.cs create mode 100644 sdk/dotnet/Ecr/Inputs/RepositoryCreationTemplateEncryptionConfigurationArgs.cs create mode 100644 sdk/dotnet/Ecr/Inputs/RepositoryCreationTemplateEncryptionConfigurationGetArgs.cs create mode 100644 sdk/dotnet/Ecr/Outputs/GetRepositoryCreationTemplateEncryptionConfigurationResult.cs create mode 100644 sdk/dotnet/Ecr/Outputs/RepositoryCreationTemplateEncryptionConfiguration.cs create mode 100644 sdk/dotnet/Ecr/RepositoryCreationTemplate.cs create mode 100644 sdk/dotnet/Eks/Inputs/ClusterUpgradePolicyArgs.cs create mode 100644 sdk/dotnet/Eks/Inputs/ClusterUpgradePolicyGetArgs.cs create mode 100644 sdk/dotnet/Eks/Outputs/ClusterUpgradePolicy.cs create mode 100644 sdk/dotnet/Eks/Outputs/GetClusterUpgradePolicyResult.cs create mode 100644 sdk/dotnet/Sfn/Inputs/ActivityEncryptionConfigurationArgs.cs create mode 100644 sdk/dotnet/Sfn/Inputs/ActivityEncryptionConfigurationGetArgs.cs create mode 100644 sdk/dotnet/Sfn/Inputs/StateMachineEncryptionConfigurationArgs.cs create mode 100644 sdk/dotnet/Sfn/Inputs/StateMachineEncryptionConfigurationGetArgs.cs create mode 100644 sdk/dotnet/Sfn/Outputs/ActivityEncryptionConfiguration.cs create mode 100644 sdk/dotnet/Sfn/Outputs/StateMachineEncryptionConfiguration.cs create mode 100644 sdk/dotnet/TimestreamInfluxDB/DbInstance.cs create mode 100644 sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationArgs.cs create mode 100644 sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationGetArgs.cs create mode 100644 sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationS3ConfigurationArgs.cs create mode 100644 sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationS3ConfigurationGetArgs.cs create mode 100644 sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceTimeoutsArgs.cs create mode 100644 sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceTimeoutsGetArgs.cs create mode 100644 sdk/dotnet/TimestreamInfluxDB/Outputs/DbInstanceLogDeliveryConfiguration.cs create mode 100644 sdk/dotnet/TimestreamInfluxDB/Outputs/DbInstanceLogDeliveryConfigurationS3Configuration.cs create mode 100644 sdk/dotnet/TimestreamInfluxDB/Outputs/DbInstanceTimeouts.cs create mode 100644 sdk/dotnet/TimestreamInfluxDB/README.md create mode 100644 sdk/go/aws/chatbot/init.go create mode 100644 sdk/go/aws/chatbot/pulumiTypes.go create mode 100644 sdk/go/aws/chatbot/slackChannelConfiguration.go create mode 100644 sdk/go/aws/chatbot/teamsChannelConfiguration.go create mode 100644 sdk/go/aws/datazone/glossary.go create mode 100644 sdk/go/aws/ecr/getRepositoryCreationTemplate.go create mode 100644 sdk/go/aws/ecr/repositoryCreationTemplate.go create mode 100644 sdk/go/aws/timestreaminfluxdb/dbInstance.go create mode 100644 sdk/go/aws/timestreaminfluxdb/init.go create mode 100644 sdk/go/aws/timestreaminfluxdb/pulumiTypes.go create mode 100644 sdk/java/src/main/java/com/pulumi/aws/appsync/inputs/GraphQLApiEnhancedMetricsConfigArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/appsync/outputs/GraphQLApiEnhancedMetricsConfig.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/chatbot/SlackChannelConfiguration.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/chatbot/SlackChannelConfigurationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/chatbot/TeamsChannelConfiguration.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/chatbot/TeamsChannelConfigurationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/SlackChannelConfigurationState.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/SlackChannelConfigurationTimeoutsArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/TeamsChannelConfigurationState.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/TeamsChannelConfigurationTimeoutsArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/chatbot/outputs/SlackChannelConfigurationTimeouts.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/chatbot/outputs/TeamsChannelConfigurationTimeouts.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/datazone/Glossary.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/datazone/GlossaryArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/datazone/inputs/GlossaryState.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/ecr/RepositoryCreationTemplate.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/ecr/RepositoryCreationTemplateArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/GetRepositoryCreationTemplateArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/GetRepositoryCreationTemplatePlainArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/RepositoryCreationTemplateEncryptionConfigurationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/RepositoryCreationTemplateState.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/ecr/outputs/GetRepositoryCreationTemplateEncryptionConfiguration.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/ecr/outputs/GetRepositoryCreationTemplateResult.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/ecr/outputs/RepositoryCreationTemplateEncryptionConfiguration.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/eks/inputs/ClusterUpgradePolicyArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/eks/outputs/ClusterUpgradePolicy.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/eks/outputs/GetClusterUpgradePolicy.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/ActivityEncryptionConfigurationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/StateMachineEncryptionConfigurationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/sfn/outputs/ActivityEncryptionConfiguration.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/sfn/outputs/StateMachineEncryptionConfiguration.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/DbInstance.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/DbInstanceArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceLogDeliveryConfigurationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceLogDeliveryConfigurationS3ConfigurationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceState.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceTimeoutsArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/outputs/DbInstanceLogDeliveryConfiguration.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/outputs/DbInstanceLogDeliveryConfigurationS3Configuration.java create mode 100644 sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/outputs/DbInstanceTimeouts.java create mode 100644 sdk/nodejs/chatbot/slackChannelConfiguration.ts create mode 100644 sdk/nodejs/chatbot/teamsChannelConfiguration.ts create mode 100644 sdk/nodejs/datazone/glossary.ts create mode 100644 sdk/nodejs/ecr/getRepositoryCreationTemplate.ts create mode 100644 sdk/nodejs/ecr/repositoryCreationTemplate.ts create mode 100644 sdk/nodejs/timestreaminfluxdb/dbInstance.ts create mode 100644 sdk/nodejs/timestreaminfluxdb/index.ts create mode 100644 sdk/python/pulumi_aws/chatbot/_inputs.py create mode 100644 sdk/python/pulumi_aws/chatbot/outputs.py create mode 100644 sdk/python/pulumi_aws/chatbot/slack_channel_configuration.py create mode 100644 sdk/python/pulumi_aws/chatbot/teams_channel_configuration.py create mode 100644 sdk/python/pulumi_aws/datazone/glossary.py create mode 100644 sdk/python/pulumi_aws/ecr/get_repository_creation_template.py create mode 100644 sdk/python/pulumi_aws/ecr/repository_creation_template.py create mode 100644 sdk/python/pulumi_aws/timestreaminfluxdb/__init__.py create mode 100644 sdk/python/pulumi_aws/timestreaminfluxdb/_inputs.py create mode 100644 sdk/python/pulumi_aws/timestreaminfluxdb/db_instance.py create mode 100644 sdk/python/pulumi_aws/timestreaminfluxdb/outputs.py diff --git a/examples/go.mod b/examples/go.mod index 0c733ca59ad..bc72f2020d0 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -3,7 +3,7 @@ module github.com/pulumi/pulumi-aws/examples/v6 go 1.22.5 require ( - github.com/aws/aws-sdk-go v1.55.2 + github.com/aws/aws-sdk-go v1.55.5 github.com/aws/aws-sdk-go-v2/config v1.27.27 github.com/aws/aws-sdk-go-v2/service/iam v1.34.3 github.com/pulumi/providertest v0.0.14 @@ -74,11 +74,12 @@ require ( github.com/aws/aws-sdk-go-v2/service/appfabric v1.9.3 // indirect github.com/aws/aws-sdk-go-v2/service/appflow v1.43.3 // indirect github.com/aws/aws-sdk-go-v2/service/appintegrations v1.27.3 // indirect - github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.30.4 // indirect + github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.31.0 // indirect github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.26.3 // indirect - github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.2.3 // indirect + github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.3.0 // indirect + github.com/aws/aws-sdk-go-v2/service/appmesh v1.27.3 // indirect github.com/aws/aws-sdk-go-v2/service/apprunner v1.30.3 // indirect - github.com/aws/aws-sdk-go-v2/service/appstream v1.36.3 // indirect + github.com/aws/aws-sdk-go-v2/service/appstream v1.37.0 // indirect github.com/aws/aws-sdk-go-v2/service/appsync v1.35.0 // indirect github.com/aws/aws-sdk-go-v2/service/athena v1.44.3 // indirect github.com/aws/aws-sdk-go-v2/service/auditmanager v1.35.3 // indirect @@ -108,11 +109,11 @@ require ( github.com/aws/aws-sdk-go-v2/service/codeartifact v1.30.3 // indirect github.com/aws/aws-sdk-go-v2/service/codebuild v1.40.3 // indirect github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.15.3 // indirect - github.com/aws/aws-sdk-go-v2/service/codecommit v1.24.3 // indirect + github.com/aws/aws-sdk-go-v2/service/codecommit v1.25.0 // indirect github.com/aws/aws-sdk-go-v2/service/codedeploy v1.27.3 // indirect github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.22.3 // indirect github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.27.3 // indirect - github.com/aws/aws-sdk-go-v2/service/codepipeline v1.30.3 // indirect + github.com/aws/aws-sdk-go-v2/service/codepipeline v1.31.0 // indirect github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.27.3 // indirect github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.24.3 // indirect github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.25.5 // indirect @@ -131,8 +132,8 @@ require ( github.com/aws/aws-sdk-go-v2/service/dataexchange v1.30.3 // indirect github.com/aws/aws-sdk-go-v2/service/datapipeline v1.23.3 // indirect github.com/aws/aws-sdk-go-v2/service/datasync v1.40.3 // indirect - github.com/aws/aws-sdk-go-v2/service/datazone v1.15.0 // indirect - github.com/aws/aws-sdk-go-v2/service/dax v1.21.3 // indirect + github.com/aws/aws-sdk-go-v2/service/datazone v1.16.0 // indirect + github.com/aws/aws-sdk-go-v2/service/dax v1.21.4 // indirect github.com/aws/aws-sdk-go-v2/service/detective v1.29.3 // indirect github.com/aws/aws-sdk-go-v2/service/devicefarm v1.25.2 // indirect github.com/aws/aws-sdk-go-v2/service/devopsguru v1.32.3 // indirect @@ -142,16 +143,16 @@ require ( github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.11.3 // indirect github.com/aws/aws-sdk-go-v2/service/drs v1.28.3 // indirect github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.4 // indirect - github.com/aws/aws-sdk-go-v2/service/ec2 v1.172.0 // indirect - github.com/aws/aws-sdk-go-v2/service/ecr v1.30.3 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.173.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ecr v1.31.0 // indirect github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.25.3 // indirect github.com/aws/aws-sdk-go-v2/service/ecs v1.44.3 // indirect github.com/aws/aws-sdk-go-v2/service/efs v1.31.3 // indirect - github.com/aws/aws-sdk-go-v2/service/eks v1.46.2 // indirect - github.com/aws/aws-sdk-go-v2/service/elasticache v1.40.3 // indirect + github.com/aws/aws-sdk-go-v2/service/eks v1.47.0 // indirect + github.com/aws/aws-sdk-go-v2/service/elasticache v1.40.5 // indirect github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.26.2 // indirect github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.26.3 // indirect - github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.33.3 // indirect + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.34.0 // indirect github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.25.3 // indirect github.com/aws/aws-sdk-go-v2/service/emr v1.42.2 // indirect github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.30.4 // indirect @@ -196,7 +197,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/lakeformation v1.35.3 // indirect github.com/aws/aws-sdk-go-v2/service/lambda v1.56.3 // indirect github.com/aws/aws-sdk-go-v2/service/launchwizard v1.6.3 // indirect - github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.45.3 // indirect + github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.46.0 // indirect github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.3 // indirect github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.29.3 // indirect github.com/aws/aws-sdk-go-v2/service/m2 v1.15.3 // indirect @@ -209,7 +210,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/mq v1.25.3 // indirect github.com/aws/aws-sdk-go-v2/service/mwaa v1.29.4 // indirect github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.10.3 // indirect - github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.40.4 // indirect + github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.41.0 // indirect github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.5.3 // indirect github.com/aws/aws-sdk-go-v2/service/oam v1.13.3 // indirect github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.13.3 // indirect @@ -229,10 +230,11 @@ require ( github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.27.3 // indirect github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.21.0 // indirect github.com/aws/aws-sdk-go-v2/service/rekognition v1.43.2 // indirect + github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.23.3 // indirect github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.12.3 // indirect github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.24.3 // indirect github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.23.3 // indirect - github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.14.0 // indirect github.com/aws/aws-sdk-go-v2/service/route53 v1.42.3 // indirect github.com/aws/aws-sdk-go-v2/service/route53domains v1.25.3 // indirect github.com/aws/aws-sdk-go-v2/service/route53profiles v1.2.3 // indirect @@ -249,7 +251,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.31.3 // indirect github.com/aws/aws-sdk-go-v2/service/servicequotas v1.23.3 // indirect github.com/aws/aws-sdk-go-v2/service/sesv2 v1.32.3 // indirect - github.com/aws/aws-sdk-go-v2/service/sfn v1.29.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sfn v1.30.0 // indirect github.com/aws/aws-sdk-go-v2/service/shield v1.27.3 // indirect github.com/aws/aws-sdk-go-v2/service/signer v1.24.3 // indirect github.com/aws/aws-sdk-go-v2/service/sns v1.31.3 // indirect @@ -259,8 +261,9 @@ require ( github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.32.3 // indirect github.com/aws/aws-sdk-go-v2/service/ssmsap v1.15.3 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 // indirect - github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.27.3 // indirect + github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.27.4 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 // indirect + github.com/aws/aws-sdk-go-v2/service/storagegateway v1.31.3 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 // indirect github.com/aws/aws-sdk-go-v2/service/swf v1.25.3 // indirect github.com/aws/aws-sdk-go-v2/service/synthetics v1.26.3 // indirect @@ -274,7 +277,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/wafregional v1.23.3 // indirect github.com/aws/aws-sdk-go-v2/service/wafv2 v1.51.4 // indirect github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.32.3 // indirect - github.com/aws/aws-sdk-go-v2/service/workspaces v1.44.2 // indirect + github.com/aws/aws-sdk-go-v2/service/workspaces v1.44.3 // indirect github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.21.3 // indirect github.com/aws/aws-sdk-go-v2/service/xray v1.27.3 // indirect github.com/aws/smithy-go v1.20.3 // indirect diff --git a/examples/go.sum b/examples/go.sum index 438fc7dba60..25e196d13fb 100644 --- a/examples/go.sum +++ b/examples/go.sum @@ -1233,8 +1233,8 @@ github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= github.com/aws/aws-sdk-go v1.25.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go v1.55.2 h1:/2OFM8uFfK9e+cqHTw9YPrvTzIXT2XkFGXRM7WbJb7E= -github.com/aws/aws-sdk-go v1.55.2/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= +github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= +github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY= github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 h1:tW1/Rkad38LA15X4UQtjXZXNKsCgkshC3EbmcUmghTg= @@ -1279,16 +1279,18 @@ github.com/aws/aws-sdk-go-v2/service/appflow v1.43.3 h1:zD7Md/MQTUfa83LgDmaKGHTL github.com/aws/aws-sdk-go-v2/service/appflow v1.43.3/go.mod h1:2b2pJQjTVLfBIzXs9TphXy1zJyRvNp34kbBgrnz4ByI= github.com/aws/aws-sdk-go-v2/service/appintegrations v1.27.3 h1:joEF6jGgq/6aHp4MEHidJyOfqWrwqJpjxHYfcocjNsU= github.com/aws/aws-sdk-go-v2/service/appintegrations v1.27.3/go.mod h1:7q06vKzUfBAZZrIfii6V8KC/+PmVNzNL2opqo9ivUMk= -github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.30.4 h1:qPr8FF0Jo4AIBcxb8gFmYcOW/zlsQX4iv8WkOGDm/F8= -github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.30.4/go.mod h1:gNFF1rFmR0dVaBfehDuil+nuTqwzdJexrcvKaDY2JU8= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.31.0 h1:rAAYERh5azv3zFgoEczNyNmUqfckRyiTKsuk/rwzvDM= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.31.0/go.mod h1:gNFF1rFmR0dVaBfehDuil+nuTqwzdJexrcvKaDY2JU8= github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.26.3 h1:G7hP9np1L0ykj02CFQgkqdZERUmHCXdw8WmR5pW2pHM= github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.26.3/go.mod h1:NU+zX7v6CGH1X2Lz+lg3EqDjdqOgiCe2MjtobaToi6o= -github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.2.3 h1:TzO+pIk4UFmMTrHRsrqyOO3qUBxV4EYyEOFYjN1I7aI= -github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.2.3/go.mod h1:xN0wvFa9G1ENYN0RbajUQ8VN3LMzyL3rcu2yP08cSMs= +github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.3.0 h1:P0tz3MXeOJogLI/JPQnyn6lWmSvCLQU/d6a4CQGetRc= +github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.3.0/go.mod h1:xN0wvFa9G1ENYN0RbajUQ8VN3LMzyL3rcu2yP08cSMs= +github.com/aws/aws-sdk-go-v2/service/appmesh v1.27.3 h1:UorKcN0SsvTcL4CGZsh2xcK3H+zP09us6NgS2g5MFIU= +github.com/aws/aws-sdk-go-v2/service/appmesh v1.27.3/go.mod h1:Jei7cWyXVkr10MXWBHbbFDIzDWEsVRGDicGNE2Kh05M= github.com/aws/aws-sdk-go-v2/service/apprunner v1.30.3 h1:x6wptcqKbH2eQw7v43MI25ILW3OtIyYwZ9gifEM0DW8= github.com/aws/aws-sdk-go-v2/service/apprunner v1.30.3/go.mod h1:buTv8bJjlKxqALyK7/2G1206H/YYllu0R/F9Hz0rhv4= -github.com/aws/aws-sdk-go-v2/service/appstream v1.36.3 h1:msS6jU0f3kTgLfUQk7JxazMbfwG5/RbsOwiwXDBO9IU= -github.com/aws/aws-sdk-go-v2/service/appstream v1.36.3/go.mod h1:zgB9SASIAI0KWFuUSlo9pGC37f6DDjh1ZJfZEhQcPhU= +github.com/aws/aws-sdk-go-v2/service/appstream v1.37.0 h1:novlmw4mzemK9FHfneoni0pG0eCPISgeW72apbWSxdY= +github.com/aws/aws-sdk-go-v2/service/appstream v1.37.0/go.mod h1:zgB9SASIAI0KWFuUSlo9pGC37f6DDjh1ZJfZEhQcPhU= github.com/aws/aws-sdk-go-v2/service/appsync v1.35.0 h1:JAfFXlcC/DzLu6+5QOMAHCCq0spH59Ex00idQUyWkyM= github.com/aws/aws-sdk-go-v2/service/appsync v1.35.0/go.mod h1:1BIEiY+76rNP8PEcv/Iyt7ybml38JqitIbrHfMDEYb8= github.com/aws/aws-sdk-go-v2/service/athena v1.44.3 h1:T2tJUqFEs8+2944NHspI3dRFELzKH4HfPXdrrIy18WA= @@ -1347,16 +1349,16 @@ github.com/aws/aws-sdk-go-v2/service/codebuild v1.40.3 h1:v+CiUB5RsmyRpGQ5Tddwn3 github.com/aws/aws-sdk-go-v2/service/codebuild v1.40.3/go.mod h1:HDiBVjDHX2n7UGFgynZLkVGPXvEnurxlEeaxPF/Ql/0= github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.15.3 h1:Bz3QJAdZd1z1rxlllKMl0s5y8kjbryqeMhlX57XJ5q8= github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.15.3/go.mod h1:R3dXCLxoYZu1zDODLw810Je3DOydgMUC2MZqyf8Gi9g= -github.com/aws/aws-sdk-go-v2/service/codecommit v1.24.3 h1:fqMQmtdFtZkPgCFKn4S9xp21RSCfdR3mytel6zfAzaQ= -github.com/aws/aws-sdk-go-v2/service/codecommit v1.24.3/go.mod h1:VgBrrInGfpFZyyCfVJ+EhV57+I924PItEJ4/yqT34u8= +github.com/aws/aws-sdk-go-v2/service/codecommit v1.25.0 h1:EyXii3hsD7M6mLoZjVbnIo14NI+ig8lopPGYVua/a+M= +github.com/aws/aws-sdk-go-v2/service/codecommit v1.25.0/go.mod h1:VgBrrInGfpFZyyCfVJ+EhV57+I924PItEJ4/yqT34u8= github.com/aws/aws-sdk-go-v2/service/codedeploy v1.27.3 h1:MSA1lrc/3I1rDQtLKmCe0P3J/jgc39jmN3SZBFVfJxA= github.com/aws/aws-sdk-go-v2/service/codedeploy v1.27.3/go.mod h1:Zqk3aokH+BfnsAfJl10gz9zWU3TC28e5rR5N/U7yYDk= github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.22.3 h1:SLX2POpbXZne1+f9RmdqEhof4p5zCpJRIt/ch4R3/bU= github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.22.3/go.mod h1:n/bcMFxX+woGslg9MazSiTs5FIPDXozv1F/TvjbIZeA= github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.27.3 h1:Fx4bbX53SzG2flM5fJHFgJ3fA7WpWohTwc4Q5np0ZYU= github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.27.3/go.mod h1:FNcnCnqWpfricoUGPTi5AoMpDp0UF4xOtS7hvdRUz38= -github.com/aws/aws-sdk-go-v2/service/codepipeline v1.30.3 h1:yoSnmI4DWImw7bFpv+9tMqcn0TtGZRLnyyvUE9j7KJw= -github.com/aws/aws-sdk-go-v2/service/codepipeline v1.30.3/go.mod h1:V/08OFKsq9jFlh0zb5WC3AvBXhPgTbMfoVrsWU0gKGg= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.31.0 h1:7H+vhjW3reojEWyXeM4BRtUhRyRDA9m2sydHfEvecgo= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.31.0/go.mod h1:V/08OFKsq9jFlh0zb5WC3AvBXhPgTbMfoVrsWU0gKGg= github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.27.3 h1:ZuvuMAG2sgoruSgJ/rxLOZWtK2kkyn225YphvpOvPDc= github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.27.3/go.mod h1:lhFfISGURSZzi/OQYyc94YoGXu3FhMp1/3g4lANOktY= github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.24.3 h1:dOpVsTQ+KP4cISpU7i+djPuNxlmRuQtrDilqbC9qhDU= @@ -1393,10 +1395,10 @@ github.com/aws/aws-sdk-go-v2/service/datapipeline v1.23.3 h1:kA26fZh30b6kOZZIkxr github.com/aws/aws-sdk-go-v2/service/datapipeline v1.23.3/go.mod h1:9Z4AiKwAlu2eXOPFEDfkLV/wTpI9o2FX09M4l6E4VE4= github.com/aws/aws-sdk-go-v2/service/datasync v1.40.3 h1:ZrKMl8jsL5YHurOLf0YVLb7JBYxGtqQQAknJ5g4MTz4= github.com/aws/aws-sdk-go-v2/service/datasync v1.40.3/go.mod h1:+ObRlRcKO/p38yJSkpVZKlCU3t9PqXMORXC+xTkb9NU= -github.com/aws/aws-sdk-go-v2/service/datazone v1.15.0 h1:V0nzmfOqo7+N8Y3F52HpJYd8BDpvGHytVIPjkBHwENQ= -github.com/aws/aws-sdk-go-v2/service/datazone v1.15.0/go.mod h1:li7vb6Ip/zyT59298XmAhs+dtXR2GqHXQlIdgL3QycE= -github.com/aws/aws-sdk-go-v2/service/dax v1.21.3 h1:uGHbOU0lBxntNZ/+Y2HbVo//AVFdl/BpMz7viHf/r8M= -github.com/aws/aws-sdk-go-v2/service/dax v1.21.3/go.mod h1:FNgKx9JXy9L0bThUl86EMV9gwUgqf2eexpitcne/AXc= +github.com/aws/aws-sdk-go-v2/service/datazone v1.16.0 h1:F5Q7eERYDK7vHRh3A2WI0xa3eYMQtflSYMCIegKrNe4= +github.com/aws/aws-sdk-go-v2/service/datazone v1.16.0/go.mod h1:li7vb6Ip/zyT59298XmAhs+dtXR2GqHXQlIdgL3QycE= +github.com/aws/aws-sdk-go-v2/service/dax v1.21.4 h1:+SxL4MQSOIy2VF4MnUnAXArNg5CPUlHMwDH2QTrX/jw= +github.com/aws/aws-sdk-go-v2/service/dax v1.21.4/go.mod h1:FNgKx9JXy9L0bThUl86EMV9gwUgqf2eexpitcne/AXc= github.com/aws/aws-sdk-go-v2/service/detective v1.29.3 h1:HimZr2FJaLzxinq9QypFY2gGM+40pMWPwxB+ZNTkfNI= github.com/aws/aws-sdk-go-v2/service/detective v1.29.3/go.mod h1:fiEtdUerGX5RHS/upeHldpHKikvfQz1MJCgquNFQeDo= github.com/aws/aws-sdk-go-v2/service/devicefarm v1.25.2 h1:DSv0r8nKo8+ix2h5Rz/Zl62kkJPRxXIEQzmRI3CQVpY= @@ -1415,26 +1417,26 @@ github.com/aws/aws-sdk-go-v2/service/drs v1.28.3 h1:ss4Ib/kWbYA4pveQtSOluDE/Kf0e github.com/aws/aws-sdk-go-v2/service/drs v1.28.3/go.mod h1:tjzPl3EOCkojHm9Q4y+Kuq7GGSJJw/P0UIqc4eHvtFI= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.4 h1:utG3S4T+X7nONPIpRoi1tVcQdAdJxntiVS2yolPJyXc= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.4/go.mod h1:q9vzW3Xr1KEXa8n4waHiFt1PrppNDlMymlYP+xpsFbY= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.172.0 h1:lJjLKG92RyKIIYujVvulR3JpVjr3yxaU34nwXCq8K2o= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.172.0/go.mod h1:o6QDjdVKpP5EF0dp/VlvqckzuSDATr1rLdHt3A5m0YY= -github.com/aws/aws-sdk-go-v2/service/ecr v1.30.3 h1:+v2hv29pWaVDASIScHuUhDC93nqJGVlGf6cujrJMHZE= -github.com/aws/aws-sdk-go-v2/service/ecr v1.30.3/go.mod h1:RhaP7Wil0+uuuhiE4FzOOEFZwkmFAk1ZflXzK+O3ptU= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.173.0 h1:ta62lid9JkIpKZtZZXSj6rP2AqY5x1qYGq53ffxqD9Q= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.173.0/go.mod h1:o6QDjdVKpP5EF0dp/VlvqckzuSDATr1rLdHt3A5m0YY= +github.com/aws/aws-sdk-go-v2/service/ecr v1.31.0 h1:vi/MwojjLGATEEUFn2GEdLiom7CFlB+qCIx4tDWqKfQ= +github.com/aws/aws-sdk-go-v2/service/ecr v1.31.0/go.mod h1:RhaP7Wil0+uuuhiE4FzOOEFZwkmFAk1ZflXzK+O3ptU= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.25.3 h1:n2eqzO9VabUkd77b88Hos6OEtbGohB/TRrtXLTZi38Y= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.25.3/go.mod h1:Oy3yHBGkKtTmsn6iJGEZxytzZQrEvoFRWldB4XmzlO4= github.com/aws/aws-sdk-go-v2/service/ecs v1.44.3 h1:JkVDQ9mfUSwMOGWIEmyB74mIznjKnHykJSq3uwusBBs= github.com/aws/aws-sdk-go-v2/service/ecs v1.44.3/go.mod h1:MsQWy/90Xwn3cy5u+eiiXqC521xIm21wOODIweLo4hs= github.com/aws/aws-sdk-go-v2/service/efs v1.31.3 h1:vHNTbv0pFB/E19MokZcWAxZIggWgcLlcixNePBe6iZc= github.com/aws/aws-sdk-go-v2/service/efs v1.31.3/go.mod h1:P1X7sDHKpqZCLac7bRsFF/EN2REOgmeKStQTa14FpEA= -github.com/aws/aws-sdk-go-v2/service/eks v1.46.2 h1:byyz/tBy/uGyucr/QLE1UmTuGaJx9ge19aWUZCiOMCc= -github.com/aws/aws-sdk-go-v2/service/eks v1.46.2/go.mod h1:awleuSoavuUt32hemzWdSrI47zq7slFtIj8St07EXpE= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.40.3 h1:nmEN5lGIAShc0nNFjvUk2/YYlsTSwX2n1XF37Av93Yw= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.40.3/go.mod h1:OcUtpbcNsyMdA/Wv5XenKl8aG3yrqA6HVIOF7ms+Ikc= +github.com/aws/aws-sdk-go-v2/service/eks v1.47.0 h1:u0VeIQ02COfhmp37ub8zv29bdRtosCYzXoWd+QRebbY= +github.com/aws/aws-sdk-go-v2/service/eks v1.47.0/go.mod h1:awleuSoavuUt32hemzWdSrI47zq7slFtIj8St07EXpE= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.40.5 h1:SIr8tXccDSncRPMK4Fifl9r6sBqHiHSFepSdIFxSfE8= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.40.5/go.mod h1:OcUtpbcNsyMdA/Wv5XenKl8aG3yrqA6HVIOF7ms+Ikc= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.26.2 h1:OA2kqnEcSqpnznO4hb4MKDXxeCRuEkADGgnihLwvn4E= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.26.2/go.mod h1:N/YWNrjILpIoai7cZ4Uq2KCNvBPf25Y+vIhbm9QpwDc= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.26.3 h1:5B2Dq2zy/hgtEO3wITnOZiyh6e+GyuHTGw6bK/8+L3w= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.26.3/go.mod h1:mgU2kG+D5ybtfGhEuZRW8usYOGrNSgsimRt/hOSI65s= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.33.3 h1:yiBmRRlVwehTN2TF0wbUkM7BluYFOLZU/U2SeQHE+q8= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.33.3/go.mod h1:L5bVuO4PeXuDuMYZfL3IW69E6mz6PDCYpp6IKDlcLMA= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.34.0 h1:8rDRtPOu3ax8jEctw7G926JQlnFdhZZA4KJzQ+4ks3Q= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.34.0/go.mod h1:L5bVuO4PeXuDuMYZfL3IW69E6mz6PDCYpp6IKDlcLMA= github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.25.3 h1:zBRYKbRPym+K+eA4gJ5yP4GNZeBgpScuCmNN2E4RV+8= github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.25.3/go.mod h1:gcxottKSKiMNTNYkuor9kcKxyt0Z5ZG1SsdvNH6L5o8= github.com/aws/aws-sdk-go-v2/service/emr v1.42.2 h1:j3aHjEsxFGCNGOCJjJM6AtPhdvn1pw2i2hGqxLU0qeI= @@ -1525,8 +1527,8 @@ github.com/aws/aws-sdk-go-v2/service/lambda v1.56.3 h1:r/y4nQOln25cbjrD8Wmzhhvnv github.com/aws/aws-sdk-go-v2/service/lambda v1.56.3/go.mod h1:/4Vaddp+wJc1AA8ViAqwWKAcYykPV+ZplhmLQuq3RbQ= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.6.3 h1:HlZn+zJoCEFuUvKLGbGXVIwXp3XA1xvLf/udp7ABDvk= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.6.3/go.mod h1:IJIHGsE1X4tRCw3s+SMG0NlIQM4yM7rlj5CfUDqT/+M= -github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.45.3 h1:sZwjTNfuXXk3Fyor/bEpjcznTD1+f6OEYxONrAU2sAc= -github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.45.3/go.mod h1:GE1lDQwM3Dm7Fysaet+yeNanYwwTvfLIUlK3P/owUw8= +github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.46.0 h1:xA65FxW3dErPwbSXxqfvS4nddclWOqSNGXfy9f32rEU= +github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.46.0/go.mod h1:GE1lDQwM3Dm7Fysaet+yeNanYwwTvfLIUlK3P/owUw8= github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.3 h1:dy4sbyGy7BS4c0KaPZwg1P5ZP+lW+auTVcPiwrmbn8M= github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.3/go.mod h1:EMgqMhof+RuaYvQavxKC0ZWvP7yB4B4NJhP+dbm13u0= github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.29.3 h1:UJEd/gP0jzWDfr4f/3TPKSls8MuomApfPap1CS/PxMY= @@ -1551,8 +1553,8 @@ github.com/aws/aws-sdk-go-v2/service/mwaa v1.29.4 h1:lptYTP7Br5zll9USf2aKY1ZlN69 github.com/aws/aws-sdk-go-v2/service/mwaa v1.29.4/go.mod h1:mtgvj3nNI+LiRNT07JaHbTh6E/y8QRrClvd+/GMhMS4= github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.10.3 h1:XEbvRhi+ELazJaqh8k0KgTZrAgXM3rmR0hsGPTIpUIo= github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.10.3/go.mod h1:tfCOS8E/SwIkqHHGgpwRZTly3ZQxcsORZPEVBKMkbx4= -github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.40.4 h1:NxceAAooi4+0/rIKXKqFUOVoT1rrVZKo6sLFuyITWPs= -github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.40.4/go.mod h1:Y9mINPJv+o9q8Ztr5/PRh2C1Iynik64IhPzwe2ERGqQ= +github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.41.0 h1:mvbaX3/zHNXRHqHNuk6NOS3JkaxqxPYLqWC4v7tObTI= +github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.41.0/go.mod h1:Y9mINPJv+o9q8Ztr5/PRh2C1Iynik64IhPzwe2ERGqQ= github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.5.3 h1:I+m+rITTdVA9BNJeuCzYgMQjqbUE10xcY0OqgBvFEFE= github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.5.3/go.mod h1:R+4X5haYg3eRWYb99y+m1UhlVjFrHNlcfl3WES5e1oQ= github.com/aws/aws-sdk-go-v2/service/oam v1.13.3 h1:KCbGN36Q/qQ27mv+/4BSax0q6/KSAxh3K3R+gRhNHwg= @@ -1591,14 +1593,16 @@ github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.21.0 h1:tXS6MbDl8H0qz github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.21.0/go.mod h1:oJRMDbpdkGsrRiSmJUumhj4KuXdP4QN9A5AK1rE0xps= github.com/aws/aws-sdk-go-v2/service/rekognition v1.43.2 h1:nrR1xZ6QoW7lUvFmLHOwTK2n25nnuPhP2f++C3DlPRc= github.com/aws/aws-sdk-go-v2/service/rekognition v1.43.2/go.mod h1:UkvOY/p1SKtJgzvwmlPnrFWOP2kj6efrbcbQHFy9qvM= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.23.3 h1:zpPWrS5Ro/YWRBykhliWh/Wk5YQxT824XPjTODCQbrc= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.23.3/go.mod h1:AnmGmmCQ14ONhL5AwIFFeHkLyC9O1SKMCoiQ++h6QGc= github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.12.3 h1:GEkqXpMrNF6UpC8edjE66HZgVpqppvxxMRhHcBbyQiU= github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.12.3/go.mod h1:PQCEcRWQIPD+uqrqSaLJDfveDYqHTPaimym1+5WtvMU= github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.24.3 h1:lxYeMxHTz8TculPM7bxM4uZxJpAH394xY215ub595H8= github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.24.3/go.mod h1:wyzvCa9oNmh3Ejs0kM63IR7lq9Vie9bcg2YIg+p9alY= github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.23.3 h1:ByynKMsGZGmpUpnQ99y+lS7VxZrNt3mdagCnHd011Kk= github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.23.3/go.mod h1:ZR4h87npHPuVQ2SEeoWMe+CO/HcS9g2iYMLnT5HawW8= -github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.13.3 h1:3lqKckUrVhC86nI5d/7suyv4sBhUJgACHfbs8qTj6+g= -github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.13.3/go.mod h1:7IIMPfX6TzfxRIJIp1NLYWFkApDOMnlb5XrynzpxMkA= +github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.14.0 h1:LoDKjG6X8Hj/Kiqmgpu/jW52GDTeToC6BehMbgHsZkg= +github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.14.0/go.mod h1:7IIMPfX6TzfxRIJIp1NLYWFkApDOMnlb5XrynzpxMkA= github.com/aws/aws-sdk-go-v2/service/route53 v1.42.3 h1:MmLCRqP4U4Cw9gJ4bNrCG0mWqEtBlmAVleyelcHARMU= github.com/aws/aws-sdk-go-v2/service/route53 v1.42.3/go.mod h1:AMPjK2YnRh0YgOID3PqhJA1BRNfXDfGOnSsKHtAe8yA= github.com/aws/aws-sdk-go-v2/service/route53domains v1.25.3 h1:VGLIgiClxmwxBpGzHERgNgwJMukHZpLcQZqJuQYjAiM= @@ -1631,8 +1635,8 @@ github.com/aws/aws-sdk-go-v2/service/servicequotas v1.23.3 h1:J6R7Mo3nDY9BmmG4V9 github.com/aws/aws-sdk-go-v2/service/servicequotas v1.23.3/go.mod h1:be52Ycqv581QoIOZzHfZFWlJLcGAI2M/ItUSlx7lLp0= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.32.3 h1:DLJCsgYZoNIIIFnWd3MXyg9ehgnlihOKDEvOAkzGRMc= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.32.3/go.mod h1:klyMXN+cNAndrESWMyT7LA8Ll0I6Nc03jxfSkeuU/Xg= -github.com/aws/aws-sdk-go-v2/service/sfn v1.29.3 h1:7BK+k08c5r1oqqHeb6ye0affEQQJ/fimBTGZSjmpjwk= -github.com/aws/aws-sdk-go-v2/service/sfn v1.29.3/go.mod h1:+mtHHxsylrf+kjxcbvfnu6jtyTT8Fa9BlqjQk5XJZ80= +github.com/aws/aws-sdk-go-v2/service/sfn v1.30.0 h1:FIprHGk9sztofQcgyHrIOh4QQo0rO1kjHmksxDrXMtg= +github.com/aws/aws-sdk-go-v2/service/sfn v1.30.0/go.mod h1:+mtHHxsylrf+kjxcbvfnu6jtyTT8Fa9BlqjQk5XJZ80= github.com/aws/aws-sdk-go-v2/service/shield v1.27.3 h1:SfjI6FuphzspGPvcRD8hjMD6wLUAE6vtJLGrui19j2s= github.com/aws/aws-sdk-go-v2/service/shield v1.27.3/go.mod h1:JpxjPa91y1hRb3G8xxzhOQFcK/r90it41jA/hD0q+Gg= github.com/aws/aws-sdk-go-v2/service/signer v1.24.3 h1:vN91JPGjBc5imkkpIqVWolvFxZygpDlRUovx221Wid8= @@ -1651,10 +1655,12 @@ github.com/aws/aws-sdk-go-v2/service/ssmsap v1.15.3 h1:vBcoorWl+c4r5un837H8fhLoS github.com/aws/aws-sdk-go-v2/service/ssmsap v1.15.3/go.mod h1:Mq0FruBai8A9f7fpzjcfD+S+y0I4DkZTygb3HxuqDB4= github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 h1:BXx0ZIxvrJdSgSvKTZ+yRBeSqqgPM89VPlulEcl37tM= github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= -github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.27.3 h1:pBE7FzR3AUpauidRUITPlDWTQ4hHktI649xZt3e/wKM= -github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.27.3/go.mod h1:EyoPT+dUT5zqspxSub9KHDWOZyIP30bPgIavBvGGVz0= +github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.27.4 h1:oXiKn9jcx+8yLLuwm8TO6qhdu2JiyIWLKxp+K80cZ4k= +github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.27.4/go.mod h1:EyoPT+dUT5zqspxSub9KHDWOZyIP30bPgIavBvGGVz0= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw= +github.com/aws/aws-sdk-go-v2/service/storagegateway v1.31.3 h1:0hdxWCS8mM4qsZI3GldBkXeee4X25aC9wZGQhpbt6w8= +github.com/aws/aws-sdk-go-v2/service/storagegateway v1.31.3/go.mod h1:N2tZQtDCR/Ls4o1pH6neRhhlkhKNE6SoruLn6nTpnzU= github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudrvuKpDKgMVRlepGE= github.com/aws/aws-sdk-go-v2/service/sts v1.30.3/go.mod h1:zwySh8fpFyXp9yOr/KVzxOl8SRqgf/IDw5aUt9UKFcQ= github.com/aws/aws-sdk-go-v2/service/swf v1.25.3 h1:7zYsHA9ORjiCHYzTJf0g+gwo3mPpn2XbMlWQreiXWdM= @@ -1681,8 +1687,8 @@ github.com/aws/aws-sdk-go-v2/service/wafv2 v1.51.4 h1:1khBA5uryBRJoCb4G2iR5RT06B github.com/aws/aws-sdk-go-v2/service/wafv2 v1.51.4/go.mod h1:QpFImaPGKNwa+MiZ+oo6LbV1PVQBapc0CnrAMRScoxM= github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.32.3 h1:BjPTq4qiR/Ywu3yf3DeGepCj5RB1c4rtEUmE62bmkus= github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.32.3/go.mod h1:jeL9apgA3x3fwH3ZkaDPIfYcXZUlmCXNrU4o+6oY4oM= -github.com/aws/aws-sdk-go-v2/service/workspaces v1.44.2 h1:xqlHduaOQOIstwjydeUA3MyQOsX78Xz+0xbkc/Lwi18= -github.com/aws/aws-sdk-go-v2/service/workspaces v1.44.2/go.mod h1:YRGgDr23EJC+32pPpWnoVB2p4JP3u5xASobpmoOlhEo= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.44.3 h1:zWbhDgri3gGMLl0mdrXIT6ocQ6lg6vSxPKRPJxhrZG4= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.44.3/go.mod h1:YRGgDr23EJC+32pPpWnoVB2p4JP3u5xASobpmoOlhEo= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.21.3 h1:fZVJVU+fgDbHDZpHv447C43ZM9E9QHbj7reT6tB19FA= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.21.3/go.mod h1:CWln0RlRf0Cc4Csr4HkyXI6BkkIujyTeWuwTo3hijP0= github.com/aws/aws-sdk-go-v2/service/xray v1.27.3 h1:0jSgvovW7R95P8XJiGxYfrnxdryQyClvebJeYbUlecw= diff --git a/patches/0007-Add-EKS-cluster-certificate_authorities-plural.patch b/patches/0007-Add-EKS-cluster-certificate_authorities-plural.patch index a4c0d7771a1..fe7b507ed53 100644 --- a/patches/0007-Add-EKS-cluster-certificate_authorities-plural.patch +++ b/patches/0007-Add-EKS-cluster-certificate_authorities-plural.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add EKS cluster certificate_authorities (plural) diff --git a/internal/service/eks/cluster.go b/internal/service/eks/cluster.go -index bb28f67a71..f018b0b38b 100644 +index 6321b6caa2..6050ca0f49 100644 --- a/internal/service/eks/cluster.go +++ b/internal/service/eks/cluster.go @@ -98,9 +98,24 @@ func resourceCluster() *schema.Resource { @@ -33,7 +33,7 @@ index bb28f67a71..f018b0b38b 100644 Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "data": { -@@ -436,6 +451,13 @@ func resourceClusterRead(ctx context.Context, d *schema.ResourceData, meta inter +@@ -456,6 +471,13 @@ func resourceClusterRead(ctx context.Context, d *schema.ResourceData, meta inter } d.Set(names.AttrARN, cluster.Arn) d.Set("bootstrap_self_managed_addons", d.Get("bootstrap_self_managed_addons")) diff --git a/patches/0018-Change-default-descriptions-to-Managed-by-Pulumi.patch b/patches/0018-Change-default-descriptions-to-Managed-by-Pulumi.patch index 1a8f2170432..62d011dbb5e 100644 --- a/patches/0018-Change-default-descriptions-to-Managed-by-Pulumi.patch +++ b/patches/0018-Change-default-descriptions-to-Managed-by-Pulumi.patch @@ -346,10 +346,10 @@ index 4cdc5534b8..027f57f753 100644 names.AttrFamily: { Type: schema.TypeString, diff --git a/internal/service/rds/option_group.go b/internal/service/rds/option_group.go -index fb39089994..5e702b7d41 100644 +index 14fea7aed7..6850948f7c 100644 --- a/internal/service/rds/option_group.go +++ b/internal/service/rds/option_group.go -@@ -125,7 +125,7 @@ func ResourceOptionGroup() *schema.Resource { +@@ -127,7 +127,7 @@ func resourceOptionGroup() *schema.Resource { Type: schema.TypeString, Optional: true, ForceNew: true, diff --git a/patches/0027-Do-not-compute-tags_all-at-TF-level.patch b/patches/0027-Do-not-compute-tags_all-at-TF-level.patch index 12c2a455c46..90db1c3b78c 100644 --- a/patches/0027-Do-not-compute-tags_all-at-TF-level.patch +++ b/patches/0027-Do-not-compute-tags_all-at-TF-level.patch @@ -21,10 +21,10 @@ index 7c33a2aae0..3c17d64604 100644 if request.Plan.Raw.IsNull() { return diff --git a/internal/provider/fwprovider/provider.go b/internal/provider/fwprovider/provider.go -index 6415ce2355..c80c01b8d1 100644 +index 907368474a..e91f383a3a 100644 --- a/internal/provider/fwprovider/provider.go +++ b/internal/provider/fwprovider/provider.go -@@ -430,8 +430,8 @@ func (p *fwprovider) Resources(ctx context.Context) []func() resource.Resource { +@@ -432,8 +432,8 @@ func (p *fwprovider) Resources(ctx context.Context) []func() resource.Resource { continue } if v, ok := schemaResponse.Schema.Attributes[names.AttrTagsAll]; ok { @@ -127,10 +127,10 @@ index 0d83e03d8b..69f1612f75 100644 Computed: true, PlanModifiers: []planmodifier.String{ diff --git a/internal/service/ec2/vpc_security_group_ingress_rule.go b/internal/service/ec2/vpc_security_group_ingress_rule.go -index 318432e2d8..e14f6ce740 100644 +index a707a1277b..cd8d6dfd54 100644 --- a/internal/service/ec2/vpc_security_group_ingress_rule.go +++ b/internal/service/ec2/vpc_security_group_ingress_rule.go -@@ -227,7 +227,7 @@ func (r *securityGroupRuleResource) Schema(ctx context.Context, request resource +@@ -228,7 +228,7 @@ func (r *securityGroupRuleResource) Schema(ctx context.Context, request resource }, }, names.AttrTags: tftags.TagsAttribute(), diff --git a/patches/0028-aws_eks_cluster-implement-default_addons_to_remove.patch b/patches/0028-aws_eks_cluster-implement-default_addons_to_remove.patch index 277ba5cd31a..a625ebe8cfa 100644 --- a/patches/0028-aws_eks_cluster-implement-default_addons_to_remove.patch +++ b/patches/0028-aws_eks_cluster-implement-default_addons_to_remove.patch @@ -5,7 +5,7 @@ Subject: [PATCH] aws_eks_cluster: implement default_addons_to_remove diff --git a/internal/service/eks/cluster.go b/internal/service/eks/cluster.go -index f018b0b38b..f41cb83f3f 100644 +index 6050ca0f49..946412fe8a 100644 --- a/internal/service/eks/cluster.go +++ b/internal/service/eks/cluster.go @@ -133,6 +133,13 @@ func resourceCluster() *schema.Resource { @@ -22,7 +22,7 @@ index f018b0b38b..f41cb83f3f 100644 "enabled_cluster_log_types": { Type: schema.TypeSet, Optional: true, -@@ -419,7 +426,11 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta int +@@ -439,7 +446,11 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta int return sdkdiag.AppendErrorf(diags, "waiting for EKS Cluster (%s) create: %s", d.Id(), err) } diff --git a/patches/0032-DisableTagSchemaCheck-for-PF-provider.patch b/patches/0032-DisableTagSchemaCheck-for-PF-provider.patch index d438446910f..c5349e85002 100644 --- a/patches/0032-DisableTagSchemaCheck-for-PF-provider.patch +++ b/patches/0032-DisableTagSchemaCheck-for-PF-provider.patch @@ -5,10 +5,10 @@ Subject: [PATCH] DisableTagSchemaCheck for PF provider diff --git a/internal/provider/fwprovider/provider.go b/internal/provider/fwprovider/provider.go -index c80c01b8d1..257f831fbb 100644 +index e91f383a3a..d653d75a56 100644 --- a/internal/provider/fwprovider/provider.go +++ b/internal/provider/fwprovider/provider.go -@@ -417,8 +417,7 @@ func (p *fwprovider) Resources(ctx context.Context) []func() resource.Resource { +@@ -419,8 +419,7 @@ func (p *fwprovider) Resources(ctx context.Context) []func() resource.Resource { if v.Tags != nil { // The resource has opted in to transparent tagging. // Ensure that the schema look OK. diff --git a/patches/0034-Fail-fast-when-PF-resources-are-dropped.patch b/patches/0034-Fail-fast-when-PF-resources-are-dropped.patch index 649566006d0..254949a03ab 100644 --- a/patches/0034-Fail-fast-when-PF-resources-are-dropped.patch +++ b/patches/0034-Fail-fast-when-PF-resources-are-dropped.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fail fast when PF resources are dropped diff --git a/internal/provider/fwprovider/provider.go b/internal/provider/fwprovider/provider.go -index 257f831fbb..d9930aee64 100644 +index d653d75a56..61489c9512 100644 --- a/internal/provider/fwprovider/provider.go +++ b/internal/provider/fwprovider/provider.go -@@ -448,9 +448,8 @@ func (p *fwprovider) Resources(ctx context.Context) []func() resource.Resource { +@@ -450,9 +450,8 @@ func (p *fwprovider) Resources(ctx context.Context) []func() resource.Resource { } if err := errors.Join(errs...); err != nil { diff --git a/patches/0038-Restore-legacy-bucket.patch b/patches/0038-Restore-legacy-bucket.patch index d1fc33dd79d..1136052a3e0 100644 --- a/patches/0038-Restore-legacy-bucket.patch +++ b/patches/0038-Restore-legacy-bucket.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Restore legacy bucket diff --git a/go.mod b/go.mod -index 0dfb06b5db..c488721d03 100644 +index 233ec3d547..43fa626f7e 100644 --- a/go.mod +++ b/go.mod -@@ -230,6 +230,7 @@ require ( +@@ -233,6 +233,7 @@ require ( github.com/gertd/go-pluralize v0.2.1 github.com/google/go-cmp v0.6.0 github.com/hashicorp/aws-cloudformation-resource-schema-sdk-go v0.23.0 @@ -17,10 +17,10 @@ index 0dfb06b5db..c488721d03 100644 github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2 v2.0.0-beta.55 github.com/hashicorp/awspolicyequivalence v1.6.0 diff --git a/go.sum b/go.sum -index 23adc7e598..b27569bdaf 100644 +index fa0f849dc3..a92268dec8 100644 --- a/go.sum +++ b/go.sum -@@ -523,6 +523,7 @@ github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +@@ -529,6 +529,7 @@ github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= @@ -28,7 +28,7 @@ index 23adc7e598..b27569bdaf 100644 github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -@@ -542,6 +543,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +@@ -548,6 +549,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/aws-cloudformation-resource-schema-sdk-go v0.23.0 h1:l16/Vrl0+x+HjHJWEjcKPwHYoxN9EC78gAFXKlH6m84= github.com/hashicorp/aws-cloudformation-resource-schema-sdk-go v0.23.0/go.mod h1:HAmscHyzSOfB1Dr16KLc177KNbn83wscnZC+N7WyaM8= @@ -37,7 +37,7 @@ index 23adc7e598..b27569bdaf 100644 github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.54 h1:O37FpbmkDSmSPgukMJLAzJzo5WBSFQx0iwn4PlY6BKI= github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.54/go.mod h1:TJ+Mz49cn0zKURLX5haphWDbmGWz15OsEiLp1CcXDwY= github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2 v2.0.0-beta.55 h1:7izXD15MCmPcWbKJ5qAwcSlnWvTwkioIJkq0+OJIJG0= -@@ -617,6 +620,7 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i +@@ -623,6 +626,7 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= @@ -45,7 +45,7 @@ index 23adc7e598..b27569bdaf 100644 github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -@@ -729,6 +733,7 @@ golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= +@@ -735,6 +739,7 @@ golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= diff --git a/patches/0045-restore-ECRConn.patch b/patches/0045-restore-ECRConn.patch index 80ebda4f176..cf90c1e9b1e 100644 --- a/patches/0045-restore-ECRConn.patch +++ b/patches/0045-restore-ECRConn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] restore ECRConn diff --git a/internal/conns/awsclient_gen.go b/internal/conns/awsclient_gen.go -index d86f45d0d6..c2c0f3598a 100644 +index d167702d9a..5645a82211 100644 --- a/internal/conns/awsclient_gen.go +++ b/internal/conns/awsclient_gen.go -@@ -218,6 +218,7 @@ import ( +@@ -220,6 +220,7 @@ import ( batch_sdkv1 "github.com/aws/aws-sdk-go/service/batch" connect_sdkv1 "github.com/aws/aws-sdk-go/service/connect" directconnect_sdkv1 "github.com/aws/aws-sdk-go/service/directconnect" @@ -16,7 +16,7 @@ index d86f45d0d6..c2c0f3598a 100644 elasticsearchservice_sdkv1 "github.com/aws/aws-sdk-go/service/elasticsearchservice" emr_sdkv1 "github.com/aws/aws-sdk-go/service/emr" gamelift_sdkv1 "github.com/aws/aws-sdk-go/service/gamelift" -@@ -589,6 +590,10 @@ func (c *AWSClient) EC2Client(ctx context.Context) *ec2_sdkv2.Client { +@@ -590,6 +591,10 @@ func (c *AWSClient) EC2Client(ctx context.Context) *ec2_sdkv2.Client { return errs.Must(client[*ec2_sdkv2.Client](ctx, c, names.EC2, make(map[string]any))) } diff --git a/patches/0047-restore-ecr-NewConn.patch b/patches/0047-restore-ecr-NewConn.patch index 2a4cbbbdbef..f8c06e2b5ac 100644 --- a/patches/0047-restore-ecr-NewConn.patch +++ b/patches/0047-restore-ecr-NewConn.patch @@ -5,7 +5,7 @@ Subject: [PATCH] restore ecr NewConn diff --git a/internal/service/ecr/service_package_gen.go b/internal/service/ecr/service_package_gen.go -index 200916df88..e7ce686f96 100644 +index 9a1f8e3ee2..4cf24b81e4 100644 --- a/internal/service/ecr/service_package_gen.go +++ b/internal/service/ecr/service_package_gen.go @@ -7,6 +7,9 @@ import ( @@ -18,7 +18,7 @@ index 200916df88..e7ce686f96 100644 "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/types" "github.com/hashicorp/terraform-provider-aws/names" -@@ -106,6 +109,13 @@ func (p *servicePackage) ServicePackageName() string { +@@ -116,6 +119,13 @@ func (p *servicePackage) ServicePackageName() string { return names.ECR } diff --git a/patches/0065-Patch-tags_all-Computed-for-chatbot-timestreaminflux.patch b/patches/0065-Patch-tags_all-Computed-for-chatbot-timestreaminflux.patch new file mode 100644 index 00000000000..49fa4acaeec --- /dev/null +++ b/patches/0065-Patch-tags_all-Computed-for-chatbot-timestreaminflux.patch @@ -0,0 +1,45 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: corymhall <43035978+corymhall@users.noreply.github.com> +Date: Fri, 2 Aug 2024 09:13:02 -0400 +Subject: [PATCH] Patch tags_all Computed for chatbot, timestreaminfluxdb + + +diff --git a/internal/service/chatbot/slack_channel_configuration.go b/internal/service/chatbot/slack_channel_configuration.go +index edd34ca88f..97e8afe082 100644 +--- a/internal/service/chatbot/slack_channel_configuration.go ++++ b/internal/service/chatbot/slack_channel_configuration.go +@@ -104,7 +104,7 @@ func (r *slackChannelConfigurationResource) Schema(ctx context.Context, request + }, + }, + names.AttrTags: tftags.TagsAttribute(), +- names.AttrTagsAll: tftags.TagsAttributeComputedOnly(), ++ names.AttrTagsAll: tftags.TagsAttribute(), + "user_authorization_required": schema.BoolAttribute{ + Optional: true, + Computed: true, +diff --git a/internal/service/chatbot/teams_channel_configuration.go b/internal/service/chatbot/teams_channel_configuration.go +index 8fe51bfe4e..77887fcec9 100644 +--- a/internal/service/chatbot/teams_channel_configuration.go ++++ b/internal/service/chatbot/teams_channel_configuration.go +@@ -101,7 +101,7 @@ func (r *teamsChannelConfigurationResource) Schema(ctx context.Context, request + }, + }, + names.AttrTags: tftags.TagsAttribute(), +- names.AttrTagsAll: tftags.TagsAttributeComputedOnly(), ++ names.AttrTagsAll: tftags.TagsAttribute(), + "team_id": schema.StringAttribute{ + Required: true, + }, +diff --git a/internal/service/timestreaminfluxdb/db_instance.go b/internal/service/timestreaminfluxdb/db_instance.go +index 60158012a7..7ce0339236 100644 +--- a/internal/service/timestreaminfluxdb/db_instance.go ++++ b/internal/service/timestreaminfluxdb/db_instance.go +@@ -188,7 +188,7 @@ func (r *resourceDBInstance) Schema(ctx context.Context, req resource.SchemaRequ + and per region.`, + }, + names.AttrTags: tftags.TagsAttribute(), +- names.AttrTagsAll: tftags.TagsAttributeComputedOnly(), ++ names.AttrTagsAll: tftags.TagsAttribute(), + "organization": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ diff --git a/provider/cmd/pulumi-resource-aws/bridge-metadata.json b/provider/cmd/pulumi-resource-aws/bridge-metadata.json index 0ef8e804cee..510277006f3 100644 --- a/provider/cmd/pulumi-resource-aws/bridge-metadata.json +++ b/provider/cmd/pulumi-resource-aws/bridge-metadata.json @@ -3039,6 +3039,9 @@ } } }, + "enhanced_metrics_config": { + "maxItemsOne": true + }, "lambda_authorizer_config": { "maxItemsOne": true }, @@ -5178,6 +5181,30 @@ } } }, + "aws_chatbot_slack_channel_configuration": { + "current": "aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration", + "majorVersion": 6, + "fields": { + "guardrail_policy_arns": { + "maxItemsOne": false + }, + "sns_topic_arns": { + "maxItemsOne": false + } + } + }, + "aws_chatbot_teams_channel_configuration": { + "current": "aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration", + "majorVersion": 6, + "fields": { + "guardrail_policy_arns": { + "maxItemsOne": false + }, + "sns_topic_arns": { + "maxItemsOne": false + } + } + }, "aws_chime_voice_connector": { "current": "aws:chime/voiceConnector:VoiceConnector", "majorVersion": 6 @@ -8466,6 +8493,10 @@ } } }, + "aws_datazone_glossary": { + "current": "aws:datazone/glossary:Glossary", + "majorVersion": 6 + }, "aws_datazone_project": { "current": "aws:datazone/project:Project", "majorVersion": 6, @@ -10353,6 +10384,18 @@ } } }, + "aws_ecr_repository_creation_template": { + "current": "aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate", + "majorVersion": 6, + "fields": { + "applied_for": { + "maxItemsOne": false + }, + "encryption_configuration": { + "maxItemsOne": false + } + } + }, "aws_ecr_repository_policy": { "current": "aws:ecr/repositoryPolicy:RepositoryPolicy", "majorVersion": 6 @@ -10808,6 +10851,9 @@ } } }, + "upgrade_policy": { + "maxItemsOne": true + }, "vpc_config": { "maxItemsOne": true, "elem": { @@ -25723,6 +25769,9 @@ "firehose_log_destination": { "maxItemsOne": true }, + "include_execution_data": { + "maxItemsOne": false + }, "s3_log_destination": { "maxItemsOne": true } @@ -158351,7 +158400,12 @@ }, "aws_sfn_activity": { "current": "aws:sfn/activity:Activity", - "majorVersion": 6 + "majorVersion": 6, + "fields": { + "encryption_configuration": { + "maxItemsOne": true + } + } }, "aws_sfn_alias": { "current": "aws:sfn/alias:Alias", @@ -158366,6 +158420,9 @@ "current": "aws:sfn/stateMachine:StateMachine", "majorVersion": 6, "fields": { + "encryption_configuration": { + "maxItemsOne": true + }, "logging_configuration": { "maxItemsOne": true }, @@ -159336,6 +159393,28 @@ "current": "aws:synthetics/groupAssociation:GroupAssociation", "majorVersion": 6 }, + "aws_timestreaminfluxdb_db_instance": { + "current": "aws:timestreaminfluxdb/dbInstance:DbInstance", + "majorVersion": 6, + "fields": { + "log_delivery_configuration": { + "maxItemsOne": true, + "elem": { + "fields": { + "s3_configuration": { + "maxItemsOne": true + } + } + } + }, + "vpc_security_group_ids": { + "maxItemsOne": false + }, + "vpc_subnet_ids": { + "maxItemsOne": false + } + } + }, "aws_timestreamwrite_database": { "current": "aws:timestreamwrite/database:Database", "majorVersion": 6 @@ -225536,6 +225615,18 @@ } } }, + "aws_ecr_repository_creation_template": { + "current": "aws:ecr/getRepositoryCreationTemplate:getRepositoryCreationTemplate", + "majorVersion": 6, + "fields": { + "applied_for": { + "maxItemsOne": false + }, + "encryption_configuration": { + "maxItemsOne": false + } + } + }, "aws_ecrpublic_authorization_token": { "current": "aws:ecrpublic/getAuthorizationToken:getAuthorizationToken", "majorVersion": 6 @@ -225774,6 +225865,9 @@ } } }, + "upgrade_policy": { + "maxItemsOne": false + }, "vpc_config": { "maxItemsOne": true, "elem": { @@ -231795,6 +231889,8 @@ "aws:cfg/remediationConfiguration:RemediationConfiguration": 0, "aws:cfg/retentionConfiguration:RetentionConfiguration": 1, "aws:cfg/rule:Rule": 0, + "aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration": 1, + "aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration": 1, "aws:chime/sdkvoiceGlobalSettings:SdkvoiceGlobalSettings": 0, "aws:chime/sdkvoiceSipMediaApplication:SdkvoiceSipMediaApplication": 0, "aws:chime/sdkvoiceSipRule:SdkvoiceSipRule": 0, @@ -231949,6 +232045,7 @@ "aws:datasync/task:Task": 0, "aws:datazone/domain:Domain": 1, "aws:datazone/environmentBlueprintConfiguration:EnvironmentBlueprintConfiguration": 1, + "aws:datazone/glossary:Glossary": 1, "aws:datazone/project:Project": 1, "aws:dax/cluster:Cluster": 0, "aws:dax/parameterGroup:ParameterGroup": 0, @@ -232155,6 +232252,7 @@ "aws:ecr/registryScanningConfiguration:RegistryScanningConfiguration": 0, "aws:ecr/replicationConfiguration:ReplicationConfiguration": 0, "aws:ecr/repository:Repository": 0, + "aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate": 0, "aws:ecr/repositoryPolicy:RepositoryPolicy": 0, "aws:ecrpublic/repository:Repository": 0, "aws:ecrpublic/repositoryPolicy:RepositoryPolicy": 0, @@ -232934,6 +233032,7 @@ "aws:synthetics/canary:Canary": 0, "aws:synthetics/group:Group": 0, "aws:synthetics/groupAssociation:GroupAssociation": 0, + "aws:timestreaminfluxdb/dbInstance:DbInstance": 1, "aws:timestreamwrite/database:Database": 0, "aws:timestreamwrite/table:Table": 0, "aws:transcribe/languageModel:LanguageModel": 0, @@ -233243,6 +233342,7 @@ "aws:ecr/getPullThroughCacheRule:getPullThroughCacheRule": 0, "aws:ecr/getRepositories:getRepositories": 1, "aws:ecr/getRepository:getRepository": 0, + "aws:ecr/getRepositoryCreationTemplate:getRepositoryCreationTemplate": 0, "aws:ecrpublic/getAuthorizationToken:getAuthorizationToken": 0, "aws:ecs/getCluster:getCluster": 0, "aws:ecs/getContainerDefinition:getContainerDefinition": 0, diff --git a/provider/cmd/pulumi-resource-aws/runtime-bridge-metadata.json b/provider/cmd/pulumi-resource-aws/runtime-bridge-metadata.json index 1164b1419cf..6b6448f56e1 100644 --- a/provider/cmd/pulumi-resource-aws/runtime-bridge-metadata.json +++ b/provider/cmd/pulumi-resource-aws/runtime-bridge-metadata.json @@ -1 +1 @@ -{"auto-settings":{"resources":{"aws_eks_cluster":{"maxItemsOneOverrides":{"certificate_authority":true}},"aws_lexv2models_slot":{"maxItemsOneOverrides":{"value_elicitation_setting.$.prompt_specification.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.prompt_specification.$.message_group.$.variation.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.continue_response.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.continue_response.$.message_group.$.variation.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.still_waiting_response.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.still_waiting_response.$.message_group.$.variation.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.waiting_response.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.waiting_response.$.message_group.$.variation.$.custom_payload":false}},"aws_sagemaker_app_image_config":{"maxItemsOneOverrides":{"kernel_gateway_image_config.$.kernel_spec":true}},"aws_securitylake_subscriber":{"maxItemsOneOverrides":{"source":true}}},"datasources":{"aws_vpc_ipam_pool":{"renames":["aws:ec2/getVpcIamPool:getVpcIamPool"]},"aws_vpc_ipam_pool_cidrs":{"renames":["aws:ec2/getVpcIamPoolCidrs:getVpcIamPoolCidrs"]},"aws_vpc_ipam_pools":{"renames":["aws:ec2/getVpcIamPools:getVpcIamPools"]}}},"mux":{"resources":{"aws:accessanalyzer/analyzer:Analyzer":0,"aws:accessanalyzer/archiveRule:ArchiveRule":0,"aws:account/alternativeContact:AlternativeContact":0,"aws:account/primaryContact:PrimaryContact":0,"aws:account/region:Region":0,"aws:acm/certificate:Certificate":0,"aws:acm/certificateValidation:CertificateValidation":0,"aws:acmpca/certificate:Certificate":0,"aws:acmpca/certificateAuthority:CertificateAuthority":0,"aws:acmpca/certificateAuthorityCertificate:CertificateAuthorityCertificate":0,"aws:acmpca/permission:Permission":0,"aws:acmpca/policy:Policy":0,"aws:alb/listener:Listener":0,"aws:alb/listenerCertificate:ListenerCertificate":0,"aws:alb/listenerRule:ListenerRule":0,"aws:alb/loadBalancer:LoadBalancer":0,"aws:alb/targetGroup:TargetGroup":0,"aws:alb/targetGroupAttachment:TargetGroupAttachment":0,"aws:amp/alertManagerDefinition:AlertManagerDefinition":0,"aws:amp/ruleGroupNamespace:RuleGroupNamespace":0,"aws:amp/scraper:Scraper":1,"aws:amp/workspace:Workspace":0,"aws:amplify/app:App":0,"aws:amplify/backendEnvironment:BackendEnvironment":0,"aws:amplify/branch:Branch":0,"aws:amplify/domainAssociation:DomainAssociation":0,"aws:amplify/webhook:Webhook":0,"aws:apigateway/account:Account":0,"aws:apigateway/apiKey:ApiKey":0,"aws:apigateway/authorizer:Authorizer":0,"aws:apigateway/basePathMapping:BasePathMapping":0,"aws:apigateway/clientCertificate:ClientCertificate":0,"aws:apigateway/deployment:Deployment":0,"aws:apigateway/documentationPart:DocumentationPart":0,"aws:apigateway/documentationVersion:DocumentationVersion":0,"aws:apigateway/domainName:DomainName":0,"aws:apigateway/integration:Integration":0,"aws:apigateway/integrationResponse:IntegrationResponse":0,"aws:apigateway/method:Method":0,"aws:apigateway/methodResponse:MethodResponse":0,"aws:apigateway/methodSettings:MethodSettings":0,"aws:apigateway/model:Model":0,"aws:apigateway/requestValidator:RequestValidator":0,"aws:apigateway/resource:Resource":0,"aws:apigateway/response:Response":0,"aws:apigateway/restApi:RestApi":0,"aws:apigateway/restApiPolicy:RestApiPolicy":0,"aws:apigateway/stage:Stage":0,"aws:apigateway/usagePlan:UsagePlan":0,"aws:apigateway/usagePlanKey:UsagePlanKey":0,"aws:apigateway/vpcLink:VpcLink":0,"aws:apigatewayv2/api:Api":0,"aws:apigatewayv2/apiMapping:ApiMapping":0,"aws:apigatewayv2/authorizer:Authorizer":0,"aws:apigatewayv2/deployment:Deployment":0,"aws:apigatewayv2/domainName:DomainName":0,"aws:apigatewayv2/integration:Integration":0,"aws:apigatewayv2/integrationResponse:IntegrationResponse":0,"aws:apigatewayv2/model:Model":0,"aws:apigatewayv2/route:Route":0,"aws:apigatewayv2/routeResponse:RouteResponse":0,"aws:apigatewayv2/stage:Stage":0,"aws:apigatewayv2/vpcLink:VpcLink":0,"aws:appautoscaling/policy:Policy":0,"aws:appautoscaling/scheduledAction:ScheduledAction":0,"aws:appautoscaling/target:Target":0,"aws:appconfig/application:Application":0,"aws:appconfig/configurationProfile:ConfigurationProfile":0,"aws:appconfig/deployment:Deployment":0,"aws:appconfig/deploymentStrategy:DeploymentStrategy":0,"aws:appconfig/environment:Environment":1,"aws:appconfig/eventIntegration:EventIntegration":0,"aws:appconfig/extension:Extension":0,"aws:appconfig/extensionAssociation:ExtensionAssociation":0,"aws:appconfig/hostedConfigurationVersion:HostedConfigurationVersion":0,"aws:appfabric/appAuthorization:AppAuthorization":1,"aws:appfabric/appAuthorizationConnection:AppAuthorizationConnection":1,"aws:appfabric/appBundle:AppBundle":1,"aws:appfabric/ingestion:Ingestion":1,"aws:appfabric/ingestionDestination:IngestionDestination":1,"aws:appflow/connectorProfile:ConnectorProfile":0,"aws:appflow/flow:Flow":0,"aws:appintegrations/dataIntegration:DataIntegration":0,"aws:applicationinsights/application:Application":0,"aws:appmesh/gatewayRoute:GatewayRoute":0,"aws:appmesh/mesh:Mesh":0,"aws:appmesh/route:Route":0,"aws:appmesh/virtualGateway:VirtualGateway":0,"aws:appmesh/virtualNode:VirtualNode":0,"aws:appmesh/virtualRouter:VirtualRouter":0,"aws:appmesh/virtualService:VirtualService":0,"aws:apprunner/autoScalingConfigurationVersion:AutoScalingConfigurationVersion":0,"aws:apprunner/connection:Connection":0,"aws:apprunner/customDomainAssociation:CustomDomainAssociation":0,"aws:apprunner/defaultAutoScalingConfigurationVersion:DefaultAutoScalingConfigurationVersion":1,"aws:apprunner/deployment:Deployment":1,"aws:apprunner/observabilityConfiguration:ObservabilityConfiguration":0,"aws:apprunner/service:Service":0,"aws:apprunner/vpcConnector:VpcConnector":0,"aws:apprunner/vpcIngressConnection:VpcIngressConnection":0,"aws:appstream/directoryConfig:DirectoryConfig":0,"aws:appstream/fleet:Fleet":0,"aws:appstream/fleetStackAssociation:FleetStackAssociation":0,"aws:appstream/imageBuilder:ImageBuilder":0,"aws:appstream/stack:Stack":0,"aws:appstream/user:User":0,"aws:appstream/userStackAssociation:UserStackAssociation":0,"aws:appsync/apiCache:ApiCache":0,"aws:appsync/apiKey:ApiKey":0,"aws:appsync/dataSource:DataSource":0,"aws:appsync/domainName:DomainName":0,"aws:appsync/domainNameApiAssociation:DomainNameApiAssociation":0,"aws:appsync/function:Function":0,"aws:appsync/graphQLApi:GraphQLApi":0,"aws:appsync/resolver:Resolver":0,"aws:appsync/type:Type":0,"aws:athena/dataCatalog:DataCatalog":0,"aws:athena/database:Database":0,"aws:athena/namedQuery:NamedQuery":0,"aws:athena/preparedStatement:PreparedStatement":0,"aws:athena/workgroup:Workgroup":0,"aws:auditmanager/accountRegistration:AccountRegistration":1,"aws:auditmanager/assessment:Assessment":1,"aws:auditmanager/assessmentDelegation:AssessmentDelegation":1,"aws:auditmanager/assessmentReport:AssessmentReport":1,"aws:auditmanager/control:Control":1,"aws:auditmanager/framework:Framework":1,"aws:auditmanager/frameworkShare:FrameworkShare":1,"aws:auditmanager/organizationAdminAccountRegistration:OrganizationAdminAccountRegistration":1,"aws:autoscaling/attachment:Attachment":0,"aws:autoscaling/group:Group":0,"aws:autoscaling/lifecycleHook:LifecycleHook":0,"aws:autoscaling/notification:Notification":0,"aws:autoscaling/policy:Policy":0,"aws:autoscaling/schedule:Schedule":0,"aws:autoscaling/tag:Tag":0,"aws:autoscaling/trafficSourceAttachment:TrafficSourceAttachment":0,"aws:autoscalingplans/scalingPlan:ScalingPlan":0,"aws:backup/framework:Framework":0,"aws:backup/globalSettings:GlobalSettings":0,"aws:backup/plan:Plan":0,"aws:backup/regionSettings:RegionSettings":0,"aws:backup/reportPlan:ReportPlan":0,"aws:backup/selection:Selection":0,"aws:backup/vault:Vault":0,"aws:backup/vaultLockConfiguration:VaultLockConfiguration":0,"aws:backup/vaultNotifications:VaultNotifications":0,"aws:backup/vaultPolicy:VaultPolicy":0,"aws:batch/computeEnvironment:ComputeEnvironment":0,"aws:batch/jobDefinition:JobDefinition":0,"aws:batch/jobQueue:JobQueue":1,"aws:batch/schedulingPolicy:SchedulingPolicy":0,"aws:bcmdata/export:Export":1,"aws:bedrock/agentAgent:AgentAgent":1,"aws:bedrock/agentAgentActionGroup:AgentAgentActionGroup":1,"aws:bedrock/agentAgentAlias:AgentAgentAlias":1,"aws:bedrock/agentAgentKnowledgeBaseAssociation:AgentAgentKnowledgeBaseAssociation":1,"aws:bedrock/agentDataSource:AgentDataSource":1,"aws:bedrock/agentKnowledgeBase:AgentKnowledgeBase":1,"aws:bedrock/customModel:CustomModel":1,"aws:bedrock/provisionedModelThroughput:ProvisionedModelThroughput":1,"aws:bedrockmodel/invocationLoggingConfiguration:InvocationLoggingConfiguration":1,"aws:budgets/budget:Budget":0,"aws:budgets/budgetAction:BudgetAction":0,"aws:cfg/aggregateAuthorization:AggregateAuthorization":0,"aws:cfg/configurationAggregator:ConfigurationAggregator":0,"aws:cfg/conformancePack:ConformancePack":0,"aws:cfg/deliveryChannel:DeliveryChannel":0,"aws:cfg/organizationConformancePack:OrganizationConformancePack":0,"aws:cfg/organizationCustomPolicyRule:OrganizationCustomPolicyRule":0,"aws:cfg/organizationCustomRule:OrganizationCustomRule":0,"aws:cfg/organizationManagedRule:OrganizationManagedRule":0,"aws:cfg/recorder:Recorder":0,"aws:cfg/recorderStatus:RecorderStatus":0,"aws:cfg/remediationConfiguration:RemediationConfiguration":0,"aws:cfg/retentionConfiguration:RetentionConfiguration":1,"aws:cfg/rule:Rule":0,"aws:chime/sdkvoiceGlobalSettings:SdkvoiceGlobalSettings":0,"aws:chime/sdkvoiceSipMediaApplication:SdkvoiceSipMediaApplication":0,"aws:chime/sdkvoiceSipRule:SdkvoiceSipRule":0,"aws:chime/sdkvoiceVoiceProfileDomain:SdkvoiceVoiceProfileDomain":0,"aws:chime/voiceConnector:VoiceConnector":0,"aws:chime/voiceConnectorGroup:VoiceConnectorGroup":0,"aws:chime/voiceConnectorLogging:VoiceConnectorLogging":0,"aws:chime/voiceConnectorOrganization:VoiceConnectorOrganization":0,"aws:chime/voiceConnectorStreaming:VoiceConnectorStreaming":0,"aws:chime/voiceConnectorTermination:VoiceConnectorTermination":0,"aws:chime/voiceConnectorTerminationCredentials:VoiceConnectorTerminationCredentials":0,"aws:chimesdkmediapipelines/mediaInsightsPipelineConfiguration:MediaInsightsPipelineConfiguration":0,"aws:cleanrooms/collaboration:Collaboration":0,"aws:cleanrooms/configuredTable:ConfiguredTable":0,"aws:cloud9/environmentEC2:EnvironmentEC2":0,"aws:cloud9/environmentMembership:EnvironmentMembership":0,"aws:cloudcontrol/resource:Resource":0,"aws:cloudformation/cloudFormationType:CloudFormationType":0,"aws:cloudformation/stack:Stack":0,"aws:cloudformation/stackSet:StackSet":0,"aws:cloudformation/stackSetInstance:StackSetInstance":0,"aws:cloudfront/cachePolicy:CachePolicy":0,"aws:cloudfront/continuousDeploymentPolicy:ContinuousDeploymentPolicy":1,"aws:cloudfront/distribution:Distribution":0,"aws:cloudfront/fieldLevelEncryptionConfig:FieldLevelEncryptionConfig":0,"aws:cloudfront/fieldLevelEncryptionProfile:FieldLevelEncryptionProfile":0,"aws:cloudfront/function:Function":0,"aws:cloudfront/keyGroup:KeyGroup":0,"aws:cloudfront/keyValueStore:KeyValueStore":1,"aws:cloudfront/keyvaluestoreKey:KeyvaluestoreKey":1,"aws:cloudfront/monitoringSubscription:MonitoringSubscription":0,"aws:cloudfront/originAccessControl:OriginAccessControl":0,"aws:cloudfront/originAccessIdentity:OriginAccessIdentity":0,"aws:cloudfront/originRequestPolicy:OriginRequestPolicy":0,"aws:cloudfront/publicKey:PublicKey":0,"aws:cloudfront/realtimeLogConfig:RealtimeLogConfig":0,"aws:cloudfront/responseHeadersPolicy:ResponseHeadersPolicy":0,"aws:cloudhsmv2/cluster:Cluster":0,"aws:cloudhsmv2/hsm:Hsm":0,"aws:cloudsearch/domain:Domain":0,"aws:cloudsearch/domainServiceAccessPolicy:DomainServiceAccessPolicy":0,"aws:cloudtrail/eventDataStore:EventDataStore":0,"aws:cloudtrail/trail:Trail":0,"aws:cloudwatch/compositeAlarm:CompositeAlarm":0,"aws:cloudwatch/dashboard:Dashboard":0,"aws:cloudwatch/eventApiDestination:EventApiDestination":0,"aws:cloudwatch/eventArchive:EventArchive":0,"aws:cloudwatch/eventBus:EventBus":0,"aws:cloudwatch/eventBusPolicy:EventBusPolicy":0,"aws:cloudwatch/eventConnection:EventConnection":0,"aws:cloudwatch/eventEndpoint:EventEndpoint":0,"aws:cloudwatch/eventPermission:EventPermission":0,"aws:cloudwatch/eventRule:EventRule":0,"aws:cloudwatch/eventTarget:EventTarget":0,"aws:cloudwatch/internetMonitor:InternetMonitor":0,"aws:cloudwatch/logAccountPolicy:LogAccountPolicy":0,"aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy":0,"aws:cloudwatch/logDestination:LogDestination":0,"aws:cloudwatch/logDestinationPolicy:LogDestinationPolicy":0,"aws:cloudwatch/logGroup:LogGroup":0,"aws:cloudwatch/logMetricFilter:LogMetricFilter":0,"aws:cloudwatch/logResourcePolicy:LogResourcePolicy":0,"aws:cloudwatch/logStream:LogStream":0,"aws:cloudwatch/logSubscriptionFilter:LogSubscriptionFilter":0,"aws:cloudwatch/metricAlarm:MetricAlarm":0,"aws:cloudwatch/metricStream:MetricStream":0,"aws:cloudwatch/queryDefinition:QueryDefinition":0,"aws:codeartifact/domain:Domain":0,"aws:codeartifact/domainPermissions:DomainPermissions":0,"aws:codeartifact/repository:Repository":0,"aws:codeartifact/repositoryPermissionsPolicy:RepositoryPermissionsPolicy":0,"aws:codebuild/project:Project":0,"aws:codebuild/reportGroup:ReportGroup":0,"aws:codebuild/resourcePolicy:ResourcePolicy":0,"aws:codebuild/sourceCredential:SourceCredential":0,"aws:codebuild/webhook:Webhook":0,"aws:codecatalyst/devEnvironment:DevEnvironment":0,"aws:codecatalyst/project:Project":0,"aws:codecatalyst/sourceRepository:SourceRepository":0,"aws:codecommit/approvalRuleTemplate:ApprovalRuleTemplate":0,"aws:codecommit/approvalRuleTemplateAssociation:ApprovalRuleTemplateAssociation":0,"aws:codecommit/repository:Repository":0,"aws:codecommit/trigger:Trigger":0,"aws:codedeploy/application:Application":0,"aws:codedeploy/deploymentConfig:DeploymentConfig":0,"aws:codedeploy/deploymentGroup:DeploymentGroup":0,"aws:codeguruprofiler/profilingGroup:ProfilingGroup":1,"aws:codegurureviewer/repositoryAssociation:RepositoryAssociation":0,"aws:codepipeline/customActionType:CustomActionType":0,"aws:codepipeline/pipeline:Pipeline":0,"aws:codepipeline/webhook:Webhook":0,"aws:codestarconnections/connection:Connection":0,"aws:codestarconnections/host:Host":0,"aws:codestarnotifications/notificationRule:NotificationRule":0,"aws:cognito/identityPool:IdentityPool":0,"aws:cognito/identityPoolProviderPrincipalTag:IdentityPoolProviderPrincipalTag":0,"aws:cognito/identityPoolRoleAttachment:IdentityPoolRoleAttachment":0,"aws:cognito/identityProvider:IdentityProvider":0,"aws:cognito/managedUserPoolClient:ManagedUserPoolClient":1,"aws:cognito/resourceServer:ResourceServer":0,"aws:cognito/riskConfiguration:RiskConfiguration":0,"aws:cognito/user:User":0,"aws:cognito/userGroup:UserGroup":0,"aws:cognito/userInGroup:UserInGroup":0,"aws:cognito/userPool:UserPool":0,"aws:cognito/userPoolClient:UserPoolClient":1,"aws:cognito/userPoolDomain:UserPoolDomain":0,"aws:cognito/userPoolUICustomization:UserPoolUICustomization":0,"aws:comprehend/documentClassifier:DocumentClassifier":0,"aws:comprehend/entityRecognizer:EntityRecognizer":0,"aws:connect/botAssociation:BotAssociation":0,"aws:connect/contactFlow:ContactFlow":0,"aws:connect/contactFlowModule:ContactFlowModule":0,"aws:connect/hoursOfOperation:HoursOfOperation":0,"aws:connect/instance:Instance":0,"aws:connect/instanceStorageConfig:InstanceStorageConfig":0,"aws:connect/lambdaFunctionAssociation:LambdaFunctionAssociation":0,"aws:connect/phoneNumber:PhoneNumber":0,"aws:connect/queue:Queue":0,"aws:connect/quickConnect:QuickConnect":0,"aws:connect/routingProfile:RoutingProfile":0,"aws:connect/securityProfile:SecurityProfile":0,"aws:connect/user:User":0,"aws:connect/userHierarchyGroup:UserHierarchyGroup":0,"aws:connect/userHierarchyStructure:UserHierarchyStructure":0,"aws:connect/vocabulary:Vocabulary":0,"aws:controltower/controlTowerControl:ControlTowerControl":0,"aws:controltower/landingZone:LandingZone":0,"aws:costexplorer/anomalyMonitor:AnomalyMonitor":0,"aws:costexplorer/anomalySubscription:AnomalySubscription":0,"aws:costexplorer/costAllocationTag:CostAllocationTag":0,"aws:costexplorer/costCategory:CostCategory":0,"aws:cur/reportDefinition:ReportDefinition":0,"aws:customerprofiles/domain:Domain":0,"aws:customerprofiles/profile:Profile":0,"aws:dataexchange/dataSet:DataSet":0,"aws:dataexchange/revision:Revision":0,"aws:datapipeline/pipeline:Pipeline":0,"aws:datapipeline/pipelineDefinition:PipelineDefinition":0,"aws:datasync/agent:Agent":0,"aws:datasync/efsLocation:EfsLocation":0,"aws:datasync/fsxOpenZfsFileSystem:FsxOpenZfsFileSystem":0,"aws:datasync/locationAzureBlob:LocationAzureBlob":0,"aws:datasync/locationFsxLustre:LocationFsxLustre":0,"aws:datasync/locationFsxOntapFileSystem:LocationFsxOntapFileSystem":0,"aws:datasync/locationFsxWindows:LocationFsxWindows":0,"aws:datasync/locationHdfs:LocationHdfs":0,"aws:datasync/locationObjectStorage:LocationObjectStorage":0,"aws:datasync/locationSmb:LocationSmb":0,"aws:datasync/nfsLocation:NfsLocation":0,"aws:datasync/s3Location:S3Location":0,"aws:datasync/task:Task":0,"aws:datazone/domain:Domain":1,"aws:datazone/environmentBlueprintConfiguration:EnvironmentBlueprintConfiguration":1,"aws:datazone/project:Project":1,"aws:dax/cluster:Cluster":0,"aws:dax/parameterGroup:ParameterGroup":0,"aws:dax/subnetGroup:SubnetGroup":0,"aws:detective/graph:Graph":0,"aws:detective/invitationAccepter:InvitationAccepter":0,"aws:detective/member:Member":0,"aws:detective/organizationAdminAccount:OrganizationAdminAccount":0,"aws:detective/organizationConfiguration:OrganizationConfiguration":0,"aws:devicefarm/devicePool:DevicePool":0,"aws:devicefarm/instanceProfile:InstanceProfile":0,"aws:devicefarm/networkProfile:NetworkProfile":0,"aws:devicefarm/project:Project":0,"aws:devicefarm/testGridProject:TestGridProject":0,"aws:devicefarm/upload:Upload":0,"aws:devopsguru/eventSourcesConfig:EventSourcesConfig":1,"aws:devopsguru/notificationChannel:NotificationChannel":1,"aws:devopsguru/resourceCollection:ResourceCollection":1,"aws:devopsguru/serviceIntegration:ServiceIntegration":1,"aws:directconnect/bgpPeer:BgpPeer":0,"aws:directconnect/connection:Connection":0,"aws:directconnect/connectionAssociation:ConnectionAssociation":0,"aws:directconnect/connectionConfirmation:ConnectionConfirmation":0,"aws:directconnect/gateway:Gateway":0,"aws:directconnect/gatewayAssociation:GatewayAssociation":0,"aws:directconnect/gatewayAssociationProposal:GatewayAssociationProposal":0,"aws:directconnect/hostedConnection:HostedConnection":0,"aws:directconnect/hostedPrivateVirtualInterface:HostedPrivateVirtualInterface":0,"aws:directconnect/hostedPrivateVirtualInterfaceAccepter:HostedPrivateVirtualInterfaceAccepter":0,"aws:directconnect/hostedPublicVirtualInterface:HostedPublicVirtualInterface":0,"aws:directconnect/hostedPublicVirtualInterfaceAccepter:HostedPublicVirtualInterfaceAccepter":0,"aws:directconnect/hostedTransitVirtualInterface:HostedTransitVirtualInterface":0,"aws:directconnect/hostedTransitVirtualInterfaceAcceptor:HostedTransitVirtualInterfaceAcceptor":0,"aws:directconnect/linkAggregationGroup:LinkAggregationGroup":0,"aws:directconnect/macsecKeyAssociation:MacsecKeyAssociation":0,"aws:directconnect/privateVirtualInterface:PrivateVirtualInterface":0,"aws:directconnect/publicVirtualInterface:PublicVirtualInterface":0,"aws:directconnect/transitVirtualInterface:TransitVirtualInterface":0,"aws:directoryservice/conditionalForwader:ConditionalForwader":0,"aws:directoryservice/directory:Directory":0,"aws:directoryservice/logService:LogService":0,"aws:directoryservice/radiusSettings:RadiusSettings":0,"aws:directoryservice/serviceRegion:ServiceRegion":0,"aws:directoryservice/sharedDirectory:SharedDirectory":0,"aws:directoryservice/sharedDirectoryAccepter:SharedDirectoryAccepter":0,"aws:directoryservice/trust:Trust":1,"aws:dlm/lifecyclePolicy:LifecyclePolicy":0,"aws:dms/certificate:Certificate":0,"aws:dms/endpoint:Endpoint":0,"aws:dms/eventSubscription:EventSubscription":0,"aws:dms/replicationConfig:ReplicationConfig":0,"aws:dms/replicationInstance:ReplicationInstance":0,"aws:dms/replicationSubnetGroup:ReplicationSubnetGroup":0,"aws:dms/replicationTask:ReplicationTask":0,"aws:dms/s3Endpoint:S3Endpoint":0,"aws:docdb/cluster:Cluster":0,"aws:docdb/clusterInstance:ClusterInstance":0,"aws:docdb/clusterParameterGroup:ClusterParameterGroup":0,"aws:docdb/clusterSnapshot:ClusterSnapshot":0,"aws:docdb/elasticCluster:ElasticCluster":1,"aws:docdb/eventSubscription:EventSubscription":0,"aws:docdb/globalCluster:GlobalCluster":0,"aws:docdb/subnetGroup:SubnetGroup":0,"aws:drs/replicationConfigurationTemplate:ReplicationConfigurationTemplate":1,"aws:dynamodb/contributorInsights:ContributorInsights":0,"aws:dynamodb/globalTable:GlobalTable":0,"aws:dynamodb/kinesisStreamingDestination:KinesisStreamingDestination":0,"aws:dynamodb/resourcePolicy:ResourcePolicy":1,"aws:dynamodb/table:Table":0,"aws:dynamodb/tableExport:TableExport":0,"aws:dynamodb/tableItem:TableItem":0,"aws:dynamodb/tableReplica:TableReplica":0,"aws:dynamodb/tag:Tag":0,"aws:ebs/defaultKmsKey:DefaultKmsKey":0,"aws:ebs/encryptionByDefault:EncryptionByDefault":0,"aws:ebs/fastSnapshotRestore:FastSnapshotRestore":1,"aws:ebs/snapshot:Snapshot":0,"aws:ebs/snapshotCopy:SnapshotCopy":0,"aws:ebs/snapshotImport:SnapshotImport":0,"aws:ebs/volume:Volume":0,"aws:ec2/ami:Ami":0,"aws:ec2/amiCopy:AmiCopy":0,"aws:ec2/amiFromInstance:AmiFromInstance":0,"aws:ec2/amiLaunchPermission:AmiLaunchPermission":0,"aws:ec2/availabilityZoneGroup:AvailabilityZoneGroup":0,"aws:ec2/capacityBlockReservation:CapacityBlockReservation":1,"aws:ec2/capacityReservation:CapacityReservation":0,"aws:ec2/carrierGateway:CarrierGateway":0,"aws:ec2/customerGateway:CustomerGateway":0,"aws:ec2/dedicatedHost:DedicatedHost":0,"aws:ec2/defaultNetworkAcl:DefaultNetworkAcl":0,"aws:ec2/defaultRouteTable:DefaultRouteTable":0,"aws:ec2/defaultSecurityGroup:DefaultSecurityGroup":0,"aws:ec2/defaultSubnet:DefaultSubnet":0,"aws:ec2/defaultVpc:DefaultVpc":0,"aws:ec2/defaultVpcDhcpOptions:DefaultVpcDhcpOptions":0,"aws:ec2/egressOnlyInternetGateway:EgressOnlyInternetGateway":0,"aws:ec2/eip:Eip":0,"aws:ec2/eipAssociation:EipAssociation":0,"aws:ec2/eipDomainName:EipDomainName":1,"aws:ec2/fleet:Fleet":0,"aws:ec2/flowLog:FlowLog":0,"aws:ec2/imageBlockPublicAccess:ImageBlockPublicAccess":0,"aws:ec2/instance:Instance":0,"aws:ec2/instanceMetadataDefaults:InstanceMetadataDefaults":1,"aws:ec2/internetGateway:InternetGateway":0,"aws:ec2/internetGatewayAttachment:InternetGatewayAttachment":0,"aws:ec2/keyPair:KeyPair":0,"aws:ec2/launchConfiguration:LaunchConfiguration":0,"aws:ec2/launchTemplate:LaunchTemplate":0,"aws:ec2/localGatewayRoute:LocalGatewayRoute":0,"aws:ec2/localGatewayRouteTableVpcAssociation:LocalGatewayRouteTableVpcAssociation":0,"aws:ec2/mainRouteTableAssociation:MainRouteTableAssociation":0,"aws:ec2/managedPrefixList:ManagedPrefixList":0,"aws:ec2/managedPrefixListEntry:ManagedPrefixListEntry":0,"aws:ec2/natGateway:NatGateway":0,"aws:ec2/networkAcl:NetworkAcl":0,"aws:ec2/networkAclAssociation:NetworkAclAssociation":0,"aws:ec2/networkAclRule:NetworkAclRule":0,"aws:ec2/networkInsightsAnalysis:NetworkInsightsAnalysis":0,"aws:ec2/networkInsightsPath:NetworkInsightsPath":0,"aws:ec2/networkInterface:NetworkInterface":0,"aws:ec2/networkInterfaceAttachment:NetworkInterfaceAttachment":0,"aws:ec2/networkInterfaceSecurityGroupAttachment:NetworkInterfaceSecurityGroupAttachment":0,"aws:ec2/peeringConnectionOptions:PeeringConnectionOptions":0,"aws:ec2/placementGroup:PlacementGroup":0,"aws:ec2/proxyProtocolPolicy:ProxyProtocolPolicy":0,"aws:ec2/route:Route":0,"aws:ec2/routeTable:RouteTable":0,"aws:ec2/routeTableAssociation:RouteTableAssociation":0,"aws:ec2/securityGroup:SecurityGroup":0,"aws:ec2/securityGroupAssociation:SecurityGroupAssociation":0,"aws:ec2/securityGroupRule:SecurityGroupRule":0,"aws:ec2/serialConsoleAccess:SerialConsoleAccess":0,"aws:ec2/snapshotCreateVolumePermission:SnapshotCreateVolumePermission":0,"aws:ec2/spotDatafeedSubscription:SpotDatafeedSubscription":0,"aws:ec2/spotFleetRequest:SpotFleetRequest":0,"aws:ec2/spotInstanceRequest:SpotInstanceRequest":0,"aws:ec2/subnet:Subnet":0,"aws:ec2/subnetCidrReservation:SubnetCidrReservation":0,"aws:ec2/tag:Tag":0,"aws:ec2/trafficMirrorFilter:TrafficMirrorFilter":0,"aws:ec2/trafficMirrorFilterRule:TrafficMirrorFilterRule":0,"aws:ec2/trafficMirrorSession:TrafficMirrorSession":0,"aws:ec2/trafficMirrorTarget:TrafficMirrorTarget":0,"aws:ec2/volumeAttachment:VolumeAttachment":0,"aws:ec2/vpc:Vpc":0,"aws:ec2/vpcDhcpOptions:VpcDhcpOptions":0,"aws:ec2/vpcDhcpOptionsAssociation:VpcDhcpOptionsAssociation":0,"aws:ec2/vpcEndpoint:VpcEndpoint":0,"aws:ec2/vpcEndpointConnectionAccepter:VpcEndpointConnectionAccepter":0,"aws:ec2/vpcEndpointConnectionNotification:VpcEndpointConnectionNotification":0,"aws:ec2/vpcEndpointPolicy:VpcEndpointPolicy":0,"aws:ec2/vpcEndpointRouteTableAssociation:VpcEndpointRouteTableAssociation":0,"aws:ec2/vpcEndpointService:VpcEndpointService":0,"aws:ec2/vpcEndpointServiceAllowedPrinciple:VpcEndpointServiceAllowedPrinciple":0,"aws:ec2/vpcEndpointSubnetAssociation:VpcEndpointSubnetAssociation":0,"aws:ec2/vpcIpam:VpcIpam":0,"aws:ec2/vpcIpamOrganizationAdminAccount:VpcIpamOrganizationAdminAccount":0,"aws:ec2/vpcIpamPool:VpcIpamPool":0,"aws:ec2/vpcIpamPoolCidr:VpcIpamPoolCidr":0,"aws:ec2/vpcIpamPoolCidrAllocation:VpcIpamPoolCidrAllocation":0,"aws:ec2/vpcIpamPreviewNextCidr:VpcIpamPreviewNextCidr":0,"aws:ec2/vpcIpamResourceDiscovery:VpcIpamResourceDiscovery":0,"aws:ec2/vpcIpamResourceDiscoveryAssociation:VpcIpamResourceDiscoveryAssociation":0,"aws:ec2/vpcIpamScope:VpcIpamScope":0,"aws:ec2/vpcIpv4CidrBlockAssociation:VpcIpv4CidrBlockAssociation":0,"aws:ec2/vpcIpv6CidrBlockAssociation:VpcIpv6CidrBlockAssociation":0,"aws:ec2/vpcNetworkPerformanceMetricSubscription:VpcNetworkPerformanceMetricSubscription":0,"aws:ec2/vpcPeeringConnection:VpcPeeringConnection":0,"aws:ec2/vpcPeeringConnectionAccepter:VpcPeeringConnectionAccepter":0,"aws:ec2/vpnConnection:VpnConnection":0,"aws:ec2/vpnConnectionRoute:VpnConnectionRoute":0,"aws:ec2/vpnGateway:VpnGateway":0,"aws:ec2/vpnGatewayAttachment:VpnGatewayAttachment":0,"aws:ec2/vpnGatewayRoutePropagation:VpnGatewayRoutePropagation":0,"aws:ec2clientvpn/authorizationRule:AuthorizationRule":0,"aws:ec2clientvpn/endpoint:Endpoint":0,"aws:ec2clientvpn/networkAssociation:NetworkAssociation":0,"aws:ec2clientvpn/route:Route":0,"aws:ec2transitgateway/connect:Connect":0,"aws:ec2transitgateway/connectPeer:ConnectPeer":0,"aws:ec2transitgateway/instanceConnectEndpoint:InstanceConnectEndpoint":1,"aws:ec2transitgateway/instanceState:InstanceState":0,"aws:ec2transitgateway/multicastDomain:MulticastDomain":0,"aws:ec2transitgateway/multicastDomainAssociation:MulticastDomainAssociation":0,"aws:ec2transitgateway/multicastGroupMember:MulticastGroupMember":0,"aws:ec2transitgateway/multicastGroupSource:MulticastGroupSource":0,"aws:ec2transitgateway/peeringAttachment:PeeringAttachment":0,"aws:ec2transitgateway/peeringAttachmentAccepter:PeeringAttachmentAccepter":0,"aws:ec2transitgateway/policyTable:PolicyTable":0,"aws:ec2transitgateway/policyTableAssociation:PolicyTableAssociation":0,"aws:ec2transitgateway/prefixListReference:PrefixListReference":0,"aws:ec2transitgateway/route:Route":0,"aws:ec2transitgateway/routeTable:RouteTable":0,"aws:ec2transitgateway/routeTableAssociation:RouteTableAssociation":0,"aws:ec2transitgateway/routeTablePropagation:RouteTablePropagation":0,"aws:ec2transitgateway/transitGateway:TransitGateway":0,"aws:ec2transitgateway/vpcAttachment:VpcAttachment":0,"aws:ec2transitgateway/vpcAttachmentAccepter:VpcAttachmentAccepter":0,"aws:ecr/lifecyclePolicy:LifecyclePolicy":0,"aws:ecr/pullThroughCacheRule:PullThroughCacheRule":0,"aws:ecr/registryPolicy:RegistryPolicy":0,"aws:ecr/registryScanningConfiguration:RegistryScanningConfiguration":0,"aws:ecr/replicationConfiguration:ReplicationConfiguration":0,"aws:ecr/repository:Repository":0,"aws:ecr/repositoryPolicy:RepositoryPolicy":0,"aws:ecrpublic/repository:Repository":0,"aws:ecrpublic/repositoryPolicy:RepositoryPolicy":0,"aws:ecs/accountSettingDefault:AccountSettingDefault":0,"aws:ecs/capacityProvider:CapacityProvider":0,"aws:ecs/cluster:Cluster":0,"aws:ecs/clusterCapacityProviders:ClusterCapacityProviders":0,"aws:ecs/service:Service":0,"aws:ecs/tag:Tag":0,"aws:ecs/taskDefinition:TaskDefinition":0,"aws:ecs/taskSet:TaskSet":0,"aws:efs/accessPoint:AccessPoint":0,"aws:efs/backupPolicy:BackupPolicy":0,"aws:efs/fileSystem:FileSystem":0,"aws:efs/fileSystemPolicy:FileSystemPolicy":0,"aws:efs/mountTarget:MountTarget":0,"aws:efs/replicationConfiguration:ReplicationConfiguration":0,"aws:eks/accessEntry:AccessEntry":0,"aws:eks/accessPolicyAssociation:AccessPolicyAssociation":0,"aws:eks/addon:Addon":0,"aws:eks/cluster:Cluster":0,"aws:eks/fargateProfile:FargateProfile":0,"aws:eks/identityProviderConfig:IdentityProviderConfig":0,"aws:eks/nodeGroup:NodeGroup":0,"aws:eks/podIdentityAssociation:PodIdentityAssociation":1,"aws:elasticache/cluster:Cluster":0,"aws:elasticache/globalReplicationGroup:GlobalReplicationGroup":0,"aws:elasticache/parameterGroup:ParameterGroup":0,"aws:elasticache/replicationGroup:ReplicationGroup":0,"aws:elasticache/serverlessCache:ServerlessCache":1,"aws:elasticache/subnetGroup:SubnetGroup":0,"aws:elasticache/user:User":0,"aws:elasticache/userGroup:UserGroup":0,"aws:elasticache/userGroupAssociation:UserGroupAssociation":0,"aws:elasticbeanstalk/application:Application":0,"aws:elasticbeanstalk/applicationVersion:ApplicationVersion":0,"aws:elasticbeanstalk/configurationTemplate:ConfigurationTemplate":0,"aws:elasticbeanstalk/environment:Environment":0,"aws:elasticsearch/domain:Domain":0,"aws:elasticsearch/domainPolicy:DomainPolicy":0,"aws:elasticsearch/domainSamlOptions:DomainSamlOptions":0,"aws:elasticsearch/vpcEndpoint:VpcEndpoint":0,"aws:elastictranscoder/pipeline:Pipeline":0,"aws:elastictranscoder/preset:Preset":0,"aws:elb/appCookieStickinessPolicy:AppCookieStickinessPolicy":0,"aws:elb/attachment:Attachment":0,"aws:elb/listenerPolicy:ListenerPolicy":0,"aws:elb/loadBalancer:LoadBalancer":0,"aws:elb/loadBalancerBackendServerPolicy:LoadBalancerBackendServerPolicy":0,"aws:elb/loadBalancerCookieStickinessPolicy:LoadBalancerCookieStickinessPolicy":0,"aws:elb/loadBalancerPolicy:LoadBalancerPolicy":0,"aws:elb/sslNegotiationPolicy:SslNegotiationPolicy":0,"aws:emr/blockPublicAccessConfiguration:BlockPublicAccessConfiguration":0,"aws:emr/cluster:Cluster":0,"aws:emr/instanceFleet:InstanceFleet":0,"aws:emr/instanceGroup:InstanceGroup":0,"aws:emr/managedScalingPolicy:ManagedScalingPolicy":0,"aws:emr/securityConfiguration:SecurityConfiguration":0,"aws:emr/studio:Studio":0,"aws:emr/studioSessionMapping:StudioSessionMapping":0,"aws:emrcontainers/jobTemplate:JobTemplate":0,"aws:emrcontainers/virtualCluster:VirtualCluster":0,"aws:emrserverless/application:Application":0,"aws:evidently/feature:Feature":0,"aws:evidently/launch:Launch":0,"aws:evidently/project:Project":0,"aws:evidently/segment:Segment":0,"aws:finspace/kxCluster:KxCluster":0,"aws:finspace/kxDatabase:KxDatabase":0,"aws:finspace/kxDataview:KxDataview":0,"aws:finspace/kxEnvironment:KxEnvironment":0,"aws:finspace/kxScalingGroup:KxScalingGroup":0,"aws:finspace/kxUser:KxUser":0,"aws:finspace/kxVolume:KxVolume":0,"aws:fis/experimentTemplate:ExperimentTemplate":0,"aws:fms/adminAccount:AdminAccount":0,"aws:fms/policy:Policy":0,"aws:fms/resourceSet:ResourceSet":1,"aws:fsx/backup:Backup":0,"aws:fsx/dataRepositoryAssociation:DataRepositoryAssociation":0,"aws:fsx/fileCache:FileCache":0,"aws:fsx/lustreFileSystem:LustreFileSystem":0,"aws:fsx/ontapFileSystem:OntapFileSystem":0,"aws:fsx/ontapStorageVirtualMachine:OntapStorageVirtualMachine":0,"aws:fsx/ontapVolume:OntapVolume":0,"aws:fsx/openZfsFileSystem:OpenZfsFileSystem":0,"aws:fsx/openZfsSnapshot:OpenZfsSnapshot":0,"aws:fsx/openZfsVolume:OpenZfsVolume":0,"aws:fsx/windowsFileSystem:WindowsFileSystem":0,"aws:gamelift/alias:Alias":0,"aws:gamelift/build:Build":0,"aws:gamelift/fleet:Fleet":0,"aws:gamelift/gameServerGroup:GameServerGroup":0,"aws:gamelift/gameSessionQueue:GameSessionQueue":0,"aws:gamelift/matchmakingConfiguration:MatchmakingConfiguration":0,"aws:gamelift/matchmakingRuleSet:MatchmakingRuleSet":0,"aws:gamelift/script:Script":0,"aws:glacier/vault:Vault":0,"aws:glacier/vaultLock:VaultLock":0,"aws:globalaccelerator/accelerator:Accelerator":0,"aws:globalaccelerator/crossAccountAttachment:CrossAccountAttachment":1,"aws:globalaccelerator/customRoutingAccelerator:CustomRoutingAccelerator":0,"aws:globalaccelerator/customRoutingEndpointGroup:CustomRoutingEndpointGroup":0,"aws:globalaccelerator/customRoutingListener:CustomRoutingListener":0,"aws:globalaccelerator/endpointGroup:EndpointGroup":0,"aws:globalaccelerator/listener:Listener":0,"aws:glue/catalogDatabase:CatalogDatabase":0,"aws:glue/catalogTable:CatalogTable":0,"aws:glue/classifier:Classifier":0,"aws:glue/connection:Connection":0,"aws:glue/crawler:Crawler":0,"aws:glue/dataCatalogEncryptionSettings:DataCatalogEncryptionSettings":0,"aws:glue/dataQualityRuleset:DataQualityRuleset":0,"aws:glue/devEndpoint:DevEndpoint":0,"aws:glue/job:Job":0,"aws:glue/mLTransform:MLTransform":0,"aws:glue/partition:Partition":0,"aws:glue/partitionIndex:PartitionIndex":0,"aws:glue/registry:Registry":0,"aws:glue/resourcePolicy:ResourcePolicy":0,"aws:glue/schema:Schema":0,"aws:glue/securityConfiguration:SecurityConfiguration":0,"aws:glue/trigger:Trigger":0,"aws:glue/userDefinedFunction:UserDefinedFunction":0,"aws:glue/workflow:Workflow":0,"aws:grafana/licenseAssociation:LicenseAssociation":0,"aws:grafana/roleAssociation:RoleAssociation":0,"aws:grafana/workspace:Workspace":0,"aws:grafana/workspaceApiKey:WorkspaceApiKey":0,"aws:grafana/workspaceSamlConfiguration:WorkspaceSamlConfiguration":0,"aws:grafana/workspaceServiceAccount:WorkspaceServiceAccount":1,"aws:grafana/workspaceServiceAccountToken:WorkspaceServiceAccountToken":1,"aws:guardduty/detector:Detector":0,"aws:guardduty/detectorFeature:DetectorFeature":0,"aws:guardduty/filter:Filter":0,"aws:guardduty/iPSet:IPSet":0,"aws:guardduty/inviteAccepter:InviteAccepter":0,"aws:guardduty/malwareProtectionPlan:MalwareProtectionPlan":1,"aws:guardduty/member:Member":0,"aws:guardduty/organizationAdminAccount:OrganizationAdminAccount":0,"aws:guardduty/organizationConfiguration:OrganizationConfiguration":0,"aws:guardduty/organizationConfigurationFeature:OrganizationConfigurationFeature":0,"aws:guardduty/publishingDestination:PublishingDestination":0,"aws:guardduty/threatIntelSet:ThreatIntelSet":0,"aws:iam/accessKey:AccessKey":0,"aws:iam/accountAlias:AccountAlias":0,"aws:iam/accountPasswordPolicy:AccountPasswordPolicy":0,"aws:iam/group:Group":0,"aws:iam/groupMembership:GroupMembership":0,"aws:iam/groupPolicy:GroupPolicy":0,"aws:iam/groupPolicyAttachment:GroupPolicyAttachment":0,"aws:iam/instanceProfile:InstanceProfile":0,"aws:iam/openIdConnectProvider:OpenIdConnectProvider":0,"aws:iam/policy:Policy":0,"aws:iam/policyAttachment:PolicyAttachment":0,"aws:iam/role:Role":0,"aws:iam/rolePolicy:RolePolicy":0,"aws:iam/rolePolicyAttachment:RolePolicyAttachment":0,"aws:iam/samlProvider:SamlProvider":0,"aws:iam/securityTokenServicePreferences:SecurityTokenServicePreferences":0,"aws:iam/serverCertificate:ServerCertificate":0,"aws:iam/serviceLinkedRole:ServiceLinkedRole":0,"aws:iam/serviceSpecificCredential:ServiceSpecificCredential":0,"aws:iam/signingCertificate:SigningCertificate":0,"aws:iam/sshKey:SshKey":0,"aws:iam/user:User":0,"aws:iam/userGroupMembership:UserGroupMembership":0,"aws:iam/userLoginProfile:UserLoginProfile":0,"aws:iam/userPolicy:UserPolicy":0,"aws:iam/userPolicyAttachment:UserPolicyAttachment":0,"aws:iam/virtualMfaDevice:VirtualMfaDevice":0,"aws:identitystore/group:Group":0,"aws:identitystore/groupMembership:GroupMembership":0,"aws:identitystore/user:User":0,"aws:imagebuilder/component:Component":0,"aws:imagebuilder/containerRecipe:ContainerRecipe":0,"aws:imagebuilder/distributionConfiguration:DistributionConfiguration":0,"aws:imagebuilder/image:Image":0,"aws:imagebuilder/imagePipeline:ImagePipeline":0,"aws:imagebuilder/imageRecipe:ImageRecipe":0,"aws:imagebuilder/infrastructureConfiguration:InfrastructureConfiguration":0,"aws:imagebuilder/workflow:Workflow":0,"aws:inspector/assessmentTarget:AssessmentTarget":0,"aws:inspector/assessmentTemplate:AssessmentTemplate":0,"aws:inspector/resourceGroup:ResourceGroup":0,"aws:inspector2/delegatedAdminAccount:DelegatedAdminAccount":0,"aws:inspector2/enabler:Enabler":0,"aws:inspector2/memberAssociation:MemberAssociation":0,"aws:inspector2/organizationConfiguration:OrganizationConfiguration":0,"aws:iot/authorizer:Authorizer":0,"aws:iot/billingGroup:BillingGroup":0,"aws:iot/caCertificate:CaCertificate":0,"aws:iot/certificate:Certificate":0,"aws:iot/domainConfiguration:DomainConfiguration":0,"aws:iot/eventConfigurations:EventConfigurations":0,"aws:iot/indexingConfiguration:IndexingConfiguration":0,"aws:iot/loggingOptions:LoggingOptions":0,"aws:iot/policy:Policy":0,"aws:iot/policyAttachment:PolicyAttachment":0,"aws:iot/provisioningTemplate:ProvisioningTemplate":0,"aws:iot/roleAlias:RoleAlias":0,"aws:iot/thing:Thing":0,"aws:iot/thingGroup:ThingGroup":0,"aws:iot/thingGroupMembership:ThingGroupMembership":0,"aws:iot/thingPrincipalAttachment:ThingPrincipalAttachment":0,"aws:iot/thingType:ThingType":0,"aws:iot/topicRule:TopicRule":0,"aws:iot/topicRuleDestination:TopicRuleDestination":0,"aws:ivs/channel:Channel":0,"aws:ivs/playbackKeyPair:PlaybackKeyPair":0,"aws:ivs/recordingConfiguration:RecordingConfiguration":0,"aws:ivschat/loggingConfiguration:LoggingConfiguration":0,"aws:ivschat/room:Room":0,"aws:kendra/dataSource:DataSource":0,"aws:kendra/experience:Experience":0,"aws:kendra/faq:Faq":0,"aws:kendra/index:Index":0,"aws:kendra/querySuggestionsBlockList:QuerySuggestionsBlockList":0,"aws:kendra/thesaurus:Thesaurus":0,"aws:keyspaces/keyspace:Keyspace":0,"aws:keyspaces/table:Table":0,"aws:kinesis/analyticsApplication:AnalyticsApplication":0,"aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream":0,"aws:kinesis/resourcePolicy:ResourcePolicy":1,"aws:kinesis/stream:Stream":0,"aws:kinesis/streamConsumer:StreamConsumer":0,"aws:kinesis/videoStream:VideoStream":0,"aws:kinesisanalyticsv2/application:Application":0,"aws:kinesisanalyticsv2/applicationSnapshot:ApplicationSnapshot":0,"aws:kms/alias:Alias":0,"aws:kms/ciphertext:Ciphertext":0,"aws:kms/customKeyStore:CustomKeyStore":0,"aws:kms/externalKey:ExternalKey":0,"aws:kms/grant:Grant":0,"aws:kms/key:Key":0,"aws:kms/keyPolicy:KeyPolicy":0,"aws:kms/replicaExternalKey:ReplicaExternalKey":0,"aws:kms/replicaKey:ReplicaKey":0,"aws:lakeformation/dataCellsFilter:DataCellsFilter":1,"aws:lakeformation/dataLakeSettings:DataLakeSettings":0,"aws:lakeformation/lfTag:LfTag":0,"aws:lakeformation/permissions:Permissions":0,"aws:lakeformation/resource:Resource":0,"aws:lakeformation/resourceLfTag:ResourceLfTag":1,"aws:lakeformation/resourceLfTags:ResourceLfTags":0,"aws:lambda/alias:Alias":0,"aws:lambda/codeSigningConfig:CodeSigningConfig":0,"aws:lambda/eventSourceMapping:EventSourceMapping":0,"aws:lambda/function:Function":0,"aws:lambda/functionEventInvokeConfig:FunctionEventInvokeConfig":0,"aws:lambda/functionUrl:FunctionUrl":0,"aws:lambda/invocation:Invocation":0,"aws:lambda/layerVersion:LayerVersion":0,"aws:lambda/layerVersionPermission:LayerVersionPermission":0,"aws:lambda/permission:Permission":0,"aws:lambda/provisionedConcurrencyConfig:ProvisionedConcurrencyConfig":0,"aws:lambda/runtimeManagementConfig:RuntimeManagementConfig":1,"aws:lb/listener:Listener":0,"aws:lb/listenerCertificate:ListenerCertificate":0,"aws:lb/listenerRule:ListenerRule":0,"aws:lb/loadBalancer:LoadBalancer":0,"aws:lb/targetGroup:TargetGroup":0,"aws:lb/targetGroupAttachment:TargetGroupAttachment":0,"aws:lb/trustStore:TrustStore":0,"aws:lb/trustStoreRevocation:TrustStoreRevocation":0,"aws:lex/bot:Bot":0,"aws:lex/botAlias:BotAlias":0,"aws:lex/intent:Intent":0,"aws:lex/slotType:SlotType":0,"aws:lex/v2modelsBot:V2modelsBot":1,"aws:lex/v2modelsBotLocale:V2modelsBotLocale":1,"aws:lex/v2modelsBotVersion:V2modelsBotVersion":1,"aws:lex/v2modelsIntent:V2modelsIntent":1,"aws:lex/v2modelsSlot:V2modelsSlot":1,"aws:lex/v2modelsSlotType:V2modelsSlotType":1,"aws:licensemanager/association:Association":0,"aws:licensemanager/licenseConfiguration:LicenseConfiguration":0,"aws:licensemanager/licenseGrant:LicenseGrant":0,"aws:licensemanager/licenseGrantAccepter:LicenseGrantAccepter":0,"aws:lightsail/bucket:Bucket":0,"aws:lightsail/bucketAccessKey:BucketAccessKey":0,"aws:lightsail/bucketResourceAccess:BucketResourceAccess":0,"aws:lightsail/certificate:Certificate":0,"aws:lightsail/containerService:ContainerService":0,"aws:lightsail/containerServiceDeploymentVersion:ContainerServiceDeploymentVersion":0,"aws:lightsail/database:Database":0,"aws:lightsail/disk:Disk":0,"aws:lightsail/disk_attachment:Disk_attachment":0,"aws:lightsail/distribution:Distribution":0,"aws:lightsail/domain:Domain":0,"aws:lightsail/domainEntry:DomainEntry":0,"aws:lightsail/instance:Instance":0,"aws:lightsail/instancePublicPorts:InstancePublicPorts":0,"aws:lightsail/keyPair:KeyPair":0,"aws:lightsail/lb:Lb":0,"aws:lightsail/lbAttachment:LbAttachment":0,"aws:lightsail/lbCertificate:LbCertificate":0,"aws:lightsail/lbCertificateAttachment:LbCertificateAttachment":0,"aws:lightsail/lbHttpsRedirectionPolicy:LbHttpsRedirectionPolicy":0,"aws:lightsail/lbStickinessPolicy:LbStickinessPolicy":0,"aws:lightsail/staticIp:StaticIp":0,"aws:lightsail/staticIpAttachment:StaticIpAttachment":0,"aws:location/geofenceCollection:GeofenceCollection":0,"aws:location/map:Map":0,"aws:location/placeIndex:PlaceIndex":0,"aws:location/routeCalculation:RouteCalculation":0,"aws:location/tracker:Tracker":0,"aws:location/trackerAssociation:TrackerAssociation":0,"aws:m2/application:Application":1,"aws:m2/deployment:Deployment":1,"aws:m2/environment:Environment":1,"aws:macie/customDataIdentifier:CustomDataIdentifier":0,"aws:macie/findingsFilter:FindingsFilter":0,"aws:macie2/account:Account":0,"aws:macie2/classificationExportConfiguration:ClassificationExportConfiguration":0,"aws:macie2/classificationJob:ClassificationJob":0,"aws:macie2/invitationAccepter:InvitationAccepter":0,"aws:macie2/member:Member":0,"aws:macie2/organizationAdminAccount:OrganizationAdminAccount":0,"aws:mediaconvert/queue:Queue":0,"aws:medialive/channel:Channel":0,"aws:medialive/input:Input":0,"aws:medialive/inputSecurityGroup:InputSecurityGroup":0,"aws:medialive/multiplex:Multiplex":0,"aws:medialive/multiplexProgram:MultiplexProgram":1,"aws:mediapackage/channel:Channel":0,"aws:mediastore/container:Container":0,"aws:mediastore/containerPolicy:ContainerPolicy":0,"aws:memorydb/acl:Acl":0,"aws:memorydb/cluster:Cluster":0,"aws:memorydb/parameterGroup:ParameterGroup":0,"aws:memorydb/snapshot:Snapshot":0,"aws:memorydb/subnetGroup:SubnetGroup":0,"aws:memorydb/user:User":0,"aws:mq/broker:Broker":0,"aws:mq/configuration:Configuration":0,"aws:msk/cluster:Cluster":0,"aws:msk/clusterPolicy:ClusterPolicy":0,"aws:msk/configuration:Configuration":0,"aws:msk/replicator:Replicator":0,"aws:msk/scramSecretAssociation:ScramSecretAssociation":0,"aws:msk/serverlessCluster:ServerlessCluster":0,"aws:msk/vpcConnection:VpcConnection":0,"aws:mskconnect/connector:Connector":0,"aws:mskconnect/customPlugin:CustomPlugin":0,"aws:mskconnect/workerConfiguration:WorkerConfiguration":0,"aws:mwaa/environment:Environment":0,"aws:neptune/cluster:Cluster":0,"aws:neptune/clusterEndpoint:ClusterEndpoint":0,"aws:neptune/clusterInstance:ClusterInstance":0,"aws:neptune/clusterParameterGroup:ClusterParameterGroup":0,"aws:neptune/clusterSnapshot:ClusterSnapshot":0,"aws:neptune/eventSubscription:EventSubscription":0,"aws:neptune/globalCluster:GlobalCluster":0,"aws:neptune/parameterGroup:ParameterGroup":0,"aws:neptune/subnetGroup:SubnetGroup":0,"aws:networkfirewall/firewall:Firewall":0,"aws:networkfirewall/firewallPolicy:FirewallPolicy":0,"aws:networkfirewall/loggingConfiguration:LoggingConfiguration":0,"aws:networkfirewall/resourcePolicy:ResourcePolicy":0,"aws:networkfirewall/ruleGroup:RuleGroup":0,"aws:networkfirewall/tlsInspectionConfiguration:TlsInspectionConfiguration":1,"aws:networkmanager/attachmentAccepter:AttachmentAccepter":0,"aws:networkmanager/connectAttachment:ConnectAttachment":0,"aws:networkmanager/connectPeer:ConnectPeer":0,"aws:networkmanager/connection:Connection":0,"aws:networkmanager/coreNetwork:CoreNetwork":0,"aws:networkmanager/coreNetworkPolicyAttachment:CoreNetworkPolicyAttachment":0,"aws:networkmanager/customerGatewayAssociation:CustomerGatewayAssociation":0,"aws:networkmanager/device:Device":0,"aws:networkmanager/globalNetwork:GlobalNetwork":0,"aws:networkmanager/link:Link":0,"aws:networkmanager/linkAssociation:LinkAssociation":0,"aws:networkmanager/site:Site":0,"aws:networkmanager/siteToSiteVpnAttachment:SiteToSiteVpnAttachment":0,"aws:networkmanager/transitGatewayConnectPeerAssociation:TransitGatewayConnectPeerAssociation":0,"aws:networkmanager/transitGatewayPeering:TransitGatewayPeering":0,"aws:networkmanager/transitGatewayRegistration:TransitGatewayRegistration":0,"aws:networkmanager/transitGatewayRouteTableAttachment:TransitGatewayRouteTableAttachment":0,"aws:networkmanager/vpcAttachment:VpcAttachment":0,"aws:networkmonitor/monitor:Monitor":1,"aws:networkmonitor/probe:Probe":1,"aws:oam/link:Link":0,"aws:oam/sink:Sink":0,"aws:oam/sinkPolicy:SinkPolicy":0,"aws:opensearch/domain:Domain":0,"aws:opensearch/domainPolicy:DomainPolicy":0,"aws:opensearch/domainSamlOptions:DomainSamlOptions":0,"aws:opensearch/inboundConnectionAccepter:InboundConnectionAccepter":0,"aws:opensearch/outboundConnection:OutboundConnection":0,"aws:opensearch/package:Package":0,"aws:opensearch/packageAssociation:PackageAssociation":0,"aws:opensearch/serverlessAccessPolicy:ServerlessAccessPolicy":1,"aws:opensearch/serverlessCollection:ServerlessCollection":1,"aws:opensearch/serverlessLifecyclePolicy:ServerlessLifecyclePolicy":1,"aws:opensearch/serverlessSecurityConfig:ServerlessSecurityConfig":1,"aws:opensearch/serverlessSecurityPolicy:ServerlessSecurityPolicy":1,"aws:opensearch/serverlessVpcEndpoint:ServerlessVpcEndpoint":1,"aws:opensearch/vpcEndpoint:VpcEndpoint":0,"aws:opensearchingest/pipeline:Pipeline":1,"aws:opsworks/application:Application":0,"aws:opsworks/customLayer:CustomLayer":0,"aws:opsworks/ecsClusterLayer:EcsClusterLayer":0,"aws:opsworks/gangliaLayer:GangliaLayer":0,"aws:opsworks/haproxyLayer:HaproxyLayer":0,"aws:opsworks/instance:Instance":0,"aws:opsworks/javaAppLayer:JavaAppLayer":0,"aws:opsworks/memcachedLayer:MemcachedLayer":0,"aws:opsworks/mysqlLayer:MysqlLayer":0,"aws:opsworks/nodejsAppLayer:NodejsAppLayer":0,"aws:opsworks/permission:Permission":0,"aws:opsworks/phpAppLayer:PhpAppLayer":0,"aws:opsworks/railsAppLayer:RailsAppLayer":0,"aws:opsworks/rdsDbInstance:RdsDbInstance":0,"aws:opsworks/stack:Stack":0,"aws:opsworks/staticWebLayer:StaticWebLayer":0,"aws:opsworks/userProfile:UserProfile":0,"aws:organizations/account:Account":0,"aws:organizations/delegatedAdministrator:DelegatedAdministrator":0,"aws:organizations/organization:Organization":0,"aws:organizations/organizationalUnit:OrganizationalUnit":0,"aws:organizations/policy:Policy":0,"aws:organizations/policyAttachment:PolicyAttachment":0,"aws:organizations/resourcePolicy:ResourcePolicy":0,"aws:paymentcryptography/key:Key":1,"aws:paymentcryptography/keyAlias:KeyAlias":1,"aws:pinpoint/admChannel:AdmChannel":0,"aws:pinpoint/apnsChannel:ApnsChannel":0,"aws:pinpoint/apnsSandboxChannel:ApnsSandboxChannel":0,"aws:pinpoint/apnsVoipChannel:ApnsVoipChannel":0,"aws:pinpoint/apnsVoipSandboxChannel:ApnsVoipSandboxChannel":0,"aws:pinpoint/app:App":0,"aws:pinpoint/baiduChannel:BaiduChannel":0,"aws:pinpoint/emailChannel:EmailChannel":0,"aws:pinpoint/eventStream:EventStream":0,"aws:pinpoint/gcmChannel:GcmChannel":0,"aws:pinpoint/smsChannel:SmsChannel":0,"aws:pipes/pipe:Pipe":0,"aws:qldb/ledger:Ledger":0,"aws:qldb/stream:Stream":0,"aws:quicksight/accountSubscription:AccountSubscription":0,"aws:quicksight/analysis:Analysis":0,"aws:quicksight/dashboard:Dashboard":0,"aws:quicksight/dataSet:DataSet":0,"aws:quicksight/dataSource:DataSource":0,"aws:quicksight/folder:Folder":0,"aws:quicksight/folderMembership:FolderMembership":1,"aws:quicksight/group:Group":0,"aws:quicksight/groupMembership:GroupMembership":0,"aws:quicksight/iamPolicyAssignment:IamPolicyAssignment":1,"aws:quicksight/ingestion:Ingestion":1,"aws:quicksight/namespace:Namespace":1,"aws:quicksight/refreshSchedule:RefreshSchedule":1,"aws:quicksight/template:Template":0,"aws:quicksight/templateAlias:TemplateAlias":1,"aws:quicksight/theme:Theme":0,"aws:quicksight/user:User":0,"aws:quicksight/vpcConnection:VpcConnection":1,"aws:ram/principalAssociation:PrincipalAssociation":0,"aws:ram/resourceAssociation:ResourceAssociation":0,"aws:ram/resourceShare:ResourceShare":0,"aws:ram/resourceShareAccepter:ResourceShareAccepter":0,"aws:ram/sharingWithOrganization:SharingWithOrganization":0,"aws:rbin/rule:Rule":0,"aws:rds/certificate:Certificate":0,"aws:rds/cluster:Cluster":0,"aws:rds/clusterActivityStream:ClusterActivityStream":0,"aws:rds/clusterEndpoint:ClusterEndpoint":0,"aws:rds/clusterInstance:ClusterInstance":0,"aws:rds/clusterParameterGroup:ClusterParameterGroup":0,"aws:rds/clusterRoleAssociation:ClusterRoleAssociation":0,"aws:rds/clusterSnapshot:ClusterSnapshot":0,"aws:rds/customDbEngineVersion:CustomDbEngineVersion":0,"aws:rds/eventSubscription:EventSubscription":0,"aws:rds/exportTask:ExportTask":1,"aws:rds/globalCluster:GlobalCluster":0,"aws:rds/instance:Instance":0,"aws:rds/instanceAutomatedBackupsReplication:InstanceAutomatedBackupsReplication":0,"aws:rds/optionGroup:OptionGroup":0,"aws:rds/parameterGroup:ParameterGroup":0,"aws:rds/proxy:Proxy":0,"aws:rds/proxyDefaultTargetGroup:ProxyDefaultTargetGroup":0,"aws:rds/proxyEndpoint:ProxyEndpoint":0,"aws:rds/proxyTarget:ProxyTarget":0,"aws:rds/reservedInstance:ReservedInstance":0,"aws:rds/roleAssociation:RoleAssociation":0,"aws:rds/snapshot:Snapshot":0,"aws:rds/snapshotCopy:SnapshotCopy":0,"aws:rds/subnetGroup:SubnetGroup":0,"aws:redshift/authenticationProfile:AuthenticationProfile":0,"aws:redshift/cluster:Cluster":0,"aws:redshift/clusterIamRoles:ClusterIamRoles":0,"aws:redshift/clusterSnapshot:ClusterSnapshot":0,"aws:redshift/dataShareAuthorization:DataShareAuthorization":1,"aws:redshift/dataShareConsumerAssociation:DataShareConsumerAssociation":1,"aws:redshift/endpointAccess:EndpointAccess":0,"aws:redshift/endpointAuthorization:EndpointAuthorization":0,"aws:redshift/eventSubscription:EventSubscription":0,"aws:redshift/hsmClientCertificate:HsmClientCertificate":0,"aws:redshift/hsmConfiguration:HsmConfiguration":0,"aws:redshift/logging:Logging":1,"aws:redshift/parameterGroup:ParameterGroup":0,"aws:redshift/partner:Partner":0,"aws:redshift/resourcePolicy:ResourcePolicy":0,"aws:redshift/scheduledAction:ScheduledAction":0,"aws:redshift/snapshotCopy:SnapshotCopy":1,"aws:redshift/snapshotCopyGrant:SnapshotCopyGrant":0,"aws:redshift/snapshotSchedule:SnapshotSchedule":0,"aws:redshift/snapshotScheduleAssociation:SnapshotScheduleAssociation":0,"aws:redshift/subnetGroup:SubnetGroup":0,"aws:redshift/usageLimit:UsageLimit":0,"aws:redshiftdata/statement:Statement":0,"aws:redshiftserverless/customDomainAssociation:CustomDomainAssociation":1,"aws:redshiftserverless/endpointAccess:EndpointAccess":0,"aws:redshiftserverless/namespace:Namespace":0,"aws:redshiftserverless/resourcePolicy:ResourcePolicy":0,"aws:redshiftserverless/snapshot:Snapshot":0,"aws:redshiftserverless/usageLimit:UsageLimit":0,"aws:redshiftserverless/workgroup:Workgroup":0,"aws:rekognition/collection:Collection":1,"aws:rekognition/project:Project":1,"aws:rekognition/streamProcessor:StreamProcessor":1,"aws:resourceexplorer/index:Index":1,"aws:resourceexplorer/view:View":1,"aws:resourcegroups/group:Group":0,"aws:resourcegroups/resource:Resource":0,"aws:rolesanywhere/profile:Profile":0,"aws:rolesanywhere/trustAnchor:TrustAnchor":0,"aws:route53/cidrCollection:CidrCollection":1,"aws:route53/cidrLocation:CidrLocation":1,"aws:route53/delegationSet:DelegationSet":0,"aws:route53/healthCheck:HealthCheck":0,"aws:route53/hostedZoneDnsSec:HostedZoneDnsSec":0,"aws:route53/keySigningKey:KeySigningKey":0,"aws:route53/queryLog:QueryLog":0,"aws:route53/record:Record":0,"aws:route53/resolverConfig:ResolverConfig":0,"aws:route53/resolverDnsSecConfig:ResolverDnsSecConfig":0,"aws:route53/resolverEndpoint:ResolverEndpoint":0,"aws:route53/resolverFirewallConfig:ResolverFirewallConfig":0,"aws:route53/resolverFirewallDomainList:ResolverFirewallDomainList":0,"aws:route53/resolverFirewallRule:ResolverFirewallRule":0,"aws:route53/resolverFirewallRuleGroup:ResolverFirewallRuleGroup":0,"aws:route53/resolverFirewallRuleGroupAssociation:ResolverFirewallRuleGroupAssociation":0,"aws:route53/resolverQueryLogConfig:ResolverQueryLogConfig":0,"aws:route53/resolverQueryLogConfigAssociation:ResolverQueryLogConfigAssociation":0,"aws:route53/resolverRule:ResolverRule":0,"aws:route53/resolverRuleAssociation:ResolverRuleAssociation":0,"aws:route53/trafficPolicy:TrafficPolicy":0,"aws:route53/trafficPolicyInstance:TrafficPolicyInstance":0,"aws:route53/vpcAssociationAuthorization:VpcAssociationAuthorization":0,"aws:route53/zone:Zone":0,"aws:route53/zoneAssociation:ZoneAssociation":0,"aws:route53domains/delegationSignerRecord:DelegationSignerRecord":1,"aws:route53domains/registeredDomain:RegisteredDomain":0,"aws:route53recoverycontrol/cluster:Cluster":0,"aws:route53recoverycontrol/controlPanel:ControlPanel":0,"aws:route53recoverycontrol/routingControl:RoutingControl":0,"aws:route53recoverycontrol/safetyRule:SafetyRule":0,"aws:route53recoveryreadiness/cell:Cell":0,"aws:route53recoveryreadiness/readinessCheck:ReadinessCheck":0,"aws:route53recoveryreadiness/recoveryGroup:RecoveryGroup":0,"aws:route53recoveryreadiness/resourceSet:ResourceSet":0,"aws:rum/appMonitor:AppMonitor":0,"aws:rum/metricsDestination:MetricsDestination":0,"aws:s3/accessPoint:AccessPoint":0,"aws:s3/accountPublicAccessBlock:AccountPublicAccessBlock":0,"aws:s3/analyticsConfiguration:AnalyticsConfiguration":0,"aws:s3/bucket:Bucket":0,"aws:s3/bucketAccelerateConfigurationV2:BucketAccelerateConfigurationV2":0,"aws:s3/bucketAclV2:BucketAclV2":0,"aws:s3/bucketCorsConfigurationV2:BucketCorsConfigurationV2":0,"aws:s3/bucketIntelligentTieringConfiguration:BucketIntelligentTieringConfiguration":0,"aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2":0,"aws:s3/bucketLoggingV2:BucketLoggingV2":0,"aws:s3/bucketMetric:BucketMetric":0,"aws:s3/bucketNotification:BucketNotification":0,"aws:s3/bucketObject:BucketObject":0,"aws:s3/bucketObjectLockConfigurationV2:BucketObjectLockConfigurationV2":0,"aws:s3/bucketObjectv2:BucketObjectv2":0,"aws:s3/bucketOwnershipControls:BucketOwnershipControls":0,"aws:s3/bucketPolicy:BucketPolicy":0,"aws:s3/bucketPublicAccessBlock:BucketPublicAccessBlock":0,"aws:s3/bucketReplicationConfig:BucketReplicationConfig":0,"aws:s3/bucketRequestPaymentConfigurationV2:BucketRequestPaymentConfigurationV2":0,"aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2":0,"aws:s3/bucketV2:BucketV2":0,"aws:s3/bucketVersioningV2:BucketVersioningV2":0,"aws:s3/bucketWebsiteConfigurationV2:BucketWebsiteConfigurationV2":0,"aws:s3/directoryBucket:DirectoryBucket":1,"aws:s3/inventory:Inventory":0,"aws:s3/objectCopy:ObjectCopy":0,"aws:s3control/accessGrant:AccessGrant":1,"aws:s3control/accessGrantsInstance:AccessGrantsInstance":1,"aws:s3control/accessGrantsInstanceResourcePolicy:AccessGrantsInstanceResourcePolicy":1,"aws:s3control/accessGrantsLocation:AccessGrantsLocation":1,"aws:s3control/accessPointPolicy:AccessPointPolicy":0,"aws:s3control/bucket:Bucket":0,"aws:s3control/bucketLifecycleConfiguration:BucketLifecycleConfiguration":0,"aws:s3control/bucketPolicy:BucketPolicy":0,"aws:s3control/multiRegionAccessPoint:MultiRegionAccessPoint":0,"aws:s3control/multiRegionAccessPointPolicy:MultiRegionAccessPointPolicy":0,"aws:s3control/objectLambdaAccessPoint:ObjectLambdaAccessPoint":0,"aws:s3control/objectLambdaAccessPointPolicy:ObjectLambdaAccessPointPolicy":0,"aws:s3control/storageLensConfiguration:StorageLensConfiguration":0,"aws:s3outposts/endpoint:Endpoint":0,"aws:sagemaker/app:App":0,"aws:sagemaker/appImageConfig:AppImageConfig":0,"aws:sagemaker/codeRepository:CodeRepository":0,"aws:sagemaker/dataQualityJobDefinition:DataQualityJobDefinition":0,"aws:sagemaker/device:Device":0,"aws:sagemaker/deviceFleet:DeviceFleet":0,"aws:sagemaker/domain:Domain":0,"aws:sagemaker/endpoint:Endpoint":0,"aws:sagemaker/endpointConfiguration:EndpointConfiguration":0,"aws:sagemaker/featureGroup:FeatureGroup":0,"aws:sagemaker/flowDefinition:FlowDefinition":0,"aws:sagemaker/humanTaskUI:HumanTaskUI":0,"aws:sagemaker/image:Image":0,"aws:sagemaker/imageVersion:ImageVersion":0,"aws:sagemaker/model:Model":0,"aws:sagemaker/modelPackageGroup:ModelPackageGroup":0,"aws:sagemaker/modelPackageGroupPolicy:ModelPackageGroupPolicy":0,"aws:sagemaker/monitoringSchedule:MonitoringSchedule":0,"aws:sagemaker/notebookInstance:NotebookInstance":0,"aws:sagemaker/notebookInstanceLifecycleConfiguration:NotebookInstanceLifecycleConfiguration":0,"aws:sagemaker/pipeline:Pipeline":0,"aws:sagemaker/project:Project":0,"aws:sagemaker/servicecatalogPortfolioStatus:ServicecatalogPortfolioStatus":0,"aws:sagemaker/space:Space":0,"aws:sagemaker/studioLifecycleConfig:StudioLifecycleConfig":0,"aws:sagemaker/userProfile:UserProfile":0,"aws:sagemaker/workforce:Workforce":0,"aws:sagemaker/workteam:Workteam":0,"aws:scheduler/schedule:Schedule":0,"aws:scheduler/scheduleGroup:ScheduleGroup":0,"aws:schemas/discoverer:Discoverer":0,"aws:schemas/registry:Registry":0,"aws:schemas/registryPolicy:RegistryPolicy":0,"aws:schemas/schema:Schema":0,"aws:secretsmanager/secret:Secret":0,"aws:secretsmanager/secretPolicy:SecretPolicy":0,"aws:secretsmanager/secretRotation:SecretRotation":0,"aws:secretsmanager/secretVersion:SecretVersion":0,"aws:securityhub/account:Account":0,"aws:securityhub/actionTarget:ActionTarget":0,"aws:securityhub/automationRule:AutomationRule":1,"aws:securityhub/configurationPolicy:ConfigurationPolicy":0,"aws:securityhub/configurationPolicyAssociation:ConfigurationPolicyAssociation":0,"aws:securityhub/findingAggregator:FindingAggregator":0,"aws:securityhub/insight:Insight":0,"aws:securityhub/inviteAccepter:InviteAccepter":0,"aws:securityhub/member:Member":0,"aws:securityhub/organizationAdminAccount:OrganizationAdminAccount":0,"aws:securityhub/organizationConfiguration:OrganizationConfiguration":0,"aws:securityhub/productSubscription:ProductSubscription":0,"aws:securityhub/standardsControl:StandardsControl":0,"aws:securityhub/standardsSubscription:StandardsSubscription":0,"aws:securitylake/awsLogSource:AwsLogSource":1,"aws:securitylake/customLogSource:CustomLogSource":1,"aws:securitylake/dataLake:DataLake":1,"aws:securitylake/subscriber:Subscriber":1,"aws:securitylake/subscriberNotification:SubscriberNotification":1,"aws:serverlessrepository/cloudFormationStack:CloudFormationStack":0,"aws:servicecatalog/appregistryApplication:AppregistryApplication":1,"aws:servicecatalog/budgetResourceAssociation:BudgetResourceAssociation":0,"aws:servicecatalog/constraint:Constraint":0,"aws:servicecatalog/organizationsAccess:OrganizationsAccess":0,"aws:servicecatalog/portfolio:Portfolio":0,"aws:servicecatalog/portfolioShare:PortfolioShare":0,"aws:servicecatalog/principalPortfolioAssociation:PrincipalPortfolioAssociation":0,"aws:servicecatalog/product:Product":0,"aws:servicecatalog/productPortfolioAssociation:ProductPortfolioAssociation":0,"aws:servicecatalog/provisionedProduct:ProvisionedProduct":0,"aws:servicecatalog/provisioningArtifact:ProvisioningArtifact":0,"aws:servicecatalog/serviceAction:ServiceAction":0,"aws:servicecatalog/tagOption:TagOption":0,"aws:servicecatalog/tagOptionResourceAssociation:TagOptionResourceAssociation":0,"aws:servicediscovery/httpNamespace:HttpNamespace":0,"aws:servicediscovery/instance:Instance":0,"aws:servicediscovery/privateDnsNamespace:PrivateDnsNamespace":0,"aws:servicediscovery/publicDnsNamespace:PublicDnsNamespace":0,"aws:servicediscovery/service:Service":0,"aws:servicequotas/serviceQuota:ServiceQuota":0,"aws:servicequotas/template:Template":1,"aws:servicequotas/templateAssociation:TemplateAssociation":1,"aws:ses/activeReceiptRuleSet:ActiveReceiptRuleSet":0,"aws:ses/configurationSet:ConfigurationSet":0,"aws:ses/domainDkim:DomainDkim":0,"aws:ses/domainIdentity:DomainIdentity":0,"aws:ses/domainIdentityVerification:DomainIdentityVerification":0,"aws:ses/emailIdentity:EmailIdentity":0,"aws:ses/eventDestination:EventDestination":0,"aws:ses/identityNotificationTopic:IdentityNotificationTopic":0,"aws:ses/identityPolicy:IdentityPolicy":0,"aws:ses/mailFrom:MailFrom":0,"aws:ses/receiptFilter:ReceiptFilter":0,"aws:ses/receiptRule:ReceiptRule":0,"aws:ses/receiptRuleSet:ReceiptRuleSet":0,"aws:ses/template:Template":0,"aws:sesv2/accountVdmAttributes:AccountVdmAttributes":0,"aws:sesv2/configurationSet:ConfigurationSet":0,"aws:sesv2/configurationSetEventDestination:ConfigurationSetEventDestination":0,"aws:sesv2/contactList:ContactList":0,"aws:sesv2/dedicatedIpAssignment:DedicatedIpAssignment":0,"aws:sesv2/dedicatedIpPool:DedicatedIpPool":0,"aws:sesv2/emailIdentity:EmailIdentity":0,"aws:sesv2/emailIdentityFeedbackAttributes:EmailIdentityFeedbackAttributes":0,"aws:sesv2/emailIdentityMailFromAttributes:EmailIdentityMailFromAttributes":0,"aws:sesv2/emailIdentityPolicy:EmailIdentityPolicy":0,"aws:sfn/activity:Activity":0,"aws:sfn/alias:Alias":0,"aws:sfn/stateMachine:StateMachine":0,"aws:shield/applicationLayerAutomaticResponse:ApplicationLayerAutomaticResponse":1,"aws:shield/drtAccessLogBucketAssociation:DrtAccessLogBucketAssociation":1,"aws:shield/drtAccessRoleArnAssociation:DrtAccessRoleArnAssociation":1,"aws:shield/proactiveEngagement:ProactiveEngagement":1,"aws:shield/protection:Protection":0,"aws:shield/protectionGroup:ProtectionGroup":0,"aws:shield/protectionHealthCheckAssociation:ProtectionHealthCheckAssociation":0,"aws:shield/subscription:Subscription":1,"aws:signer/signingJob:SigningJob":0,"aws:signer/signingProfile:SigningProfile":0,"aws:signer/signingProfilePermission:SigningProfilePermission":0,"aws:simpledb/domain:Domain":1,"aws:sns/dataProtectionPolicy:DataProtectionPolicy":0,"aws:sns/platformApplication:PlatformApplication":0,"aws:sns/smsPreferences:SmsPreferences":0,"aws:sns/topic:Topic":0,"aws:sns/topicPolicy:TopicPolicy":0,"aws:sns/topicSubscription:TopicSubscription":0,"aws:sqs/queue:Queue":0,"aws:sqs/queuePolicy:QueuePolicy":0,"aws:sqs/redriveAllowPolicy:RedriveAllowPolicy":0,"aws:sqs/redrivePolicy:RedrivePolicy":0,"aws:ssm/activation:Activation":0,"aws:ssm/association:Association":0,"aws:ssm/contactsRotation:ContactsRotation":1,"aws:ssm/defaultPatchBaseline:DefaultPatchBaseline":0,"aws:ssm/document:Document":0,"aws:ssm/maintenanceWindow:MaintenanceWindow":0,"aws:ssm/maintenanceWindowTarget:MaintenanceWindowTarget":0,"aws:ssm/maintenanceWindowTask:MaintenanceWindowTask":0,"aws:ssm/parameter:Parameter":0,"aws:ssm/patchBaseline:PatchBaseline":0,"aws:ssm/patchGroup:PatchGroup":0,"aws:ssm/resourceDataSync:ResourceDataSync":0,"aws:ssm/serviceSetting:ServiceSetting":0,"aws:ssmcontacts/contact:Contact":0,"aws:ssmcontacts/contactChannel:ContactChannel":0,"aws:ssmcontacts/plan:Plan":0,"aws:ssmincidents/replicationSet:ReplicationSet":0,"aws:ssmincidents/responsePlan:ResponsePlan":0,"aws:ssoadmin/accountAssignment:AccountAssignment":0,"aws:ssoadmin/application:Application":1,"aws:ssoadmin/applicationAccessScope:ApplicationAccessScope":1,"aws:ssoadmin/applicationAssignment:ApplicationAssignment":1,"aws:ssoadmin/applicationAssignmentConfiguration:ApplicationAssignmentConfiguration":1,"aws:ssoadmin/customerManagedPolicyAttachment:CustomerManagedPolicyAttachment":0,"aws:ssoadmin/instanceAccessControlAttributes:InstanceAccessControlAttributes":0,"aws:ssoadmin/managedPolicyAttachment:ManagedPolicyAttachment":0,"aws:ssoadmin/permissionSet:PermissionSet":0,"aws:ssoadmin/permissionSetInlinePolicy:PermissionSetInlinePolicy":0,"aws:ssoadmin/permissionsBoundaryAttachment:PermissionsBoundaryAttachment":0,"aws:ssoadmin/trustedTokenIssuer:TrustedTokenIssuer":1,"aws:storagegateway/cache:Cache":0,"aws:storagegateway/cachesIscsiVolume:CachesIscsiVolume":0,"aws:storagegateway/fileSystemAssociation:FileSystemAssociation":0,"aws:storagegateway/gateway:Gateway":0,"aws:storagegateway/nfsFileShare:NfsFileShare":0,"aws:storagegateway/smbFileShare:SmbFileShare":0,"aws:storagegateway/storedIscsiVolume:StoredIscsiVolume":0,"aws:storagegateway/tapePool:TapePool":0,"aws:storagegateway/uploadBuffer:UploadBuffer":0,"aws:storagegateway/workingStorage:WorkingStorage":0,"aws:swf/domain:Domain":0,"aws:synthetics/canary:Canary":0,"aws:synthetics/group:Group":0,"aws:synthetics/groupAssociation:GroupAssociation":0,"aws:timestreamwrite/database:Database":0,"aws:timestreamwrite/table:Table":0,"aws:transcribe/languageModel:LanguageModel":0,"aws:transcribe/medicalVocabulary:MedicalVocabulary":0,"aws:transcribe/vocabulary:Vocabulary":0,"aws:transcribe/vocabularyFilter:VocabularyFilter":0,"aws:transfer/access:Access":0,"aws:transfer/agreement:Agreement":0,"aws:transfer/certificate:Certificate":0,"aws:transfer/connector:Connector":0,"aws:transfer/profile:Profile":0,"aws:transfer/server:Server":0,"aws:transfer/sshKey:SshKey":0,"aws:transfer/tag:Tag":0,"aws:transfer/user:User":0,"aws:transfer/workflow:Workflow":0,"aws:verifiedaccess/endpoint:Endpoint":0,"aws:verifiedaccess/group:Group":0,"aws:verifiedaccess/instance:Instance":0,"aws:verifiedaccess/instanceLoggingConfiguration:InstanceLoggingConfiguration":0,"aws:verifiedaccess/instanceTrustProviderAttachment:InstanceTrustProviderAttachment":0,"aws:verifiedaccess/trustProvider:TrustProvider":0,"aws:verifiedpermissions/identitySource:IdentitySource":1,"aws:verifiedpermissions/policy:Policy":1,"aws:verifiedpermissions/policyStore:PolicyStore":1,"aws:verifiedpermissions/policyTemplate:PolicyTemplate":1,"aws:verifiedpermissions/schema:Schema":1,"aws:vpc/endpointPrivateDns:EndpointPrivateDns":1,"aws:vpc/endpointServicePrivateDnsVerification:EndpointServicePrivateDnsVerification":1,"aws:vpc/securityGroupEgressRule:SecurityGroupEgressRule":1,"aws:vpc/securityGroupIngressRule:SecurityGroupIngressRule":1,"aws:vpclattice/accessLogSubscription:AccessLogSubscription":0,"aws:vpclattice/authPolicy:AuthPolicy":0,"aws:vpclattice/listener:Listener":0,"aws:vpclattice/listenerRule:ListenerRule":0,"aws:vpclattice/resourcePolicy:ResourcePolicy":0,"aws:vpclattice/service:Service":0,"aws:vpclattice/serviceNetwork:ServiceNetwork":0,"aws:vpclattice/serviceNetworkServiceAssociation:ServiceNetworkServiceAssociation":0,"aws:vpclattice/serviceNetworkVpcAssociation:ServiceNetworkVpcAssociation":0,"aws:vpclattice/targetGroup:TargetGroup":0,"aws:vpclattice/targetGroupAttachment:TargetGroupAttachment":0,"aws:waf/byteMatchSet:ByteMatchSet":0,"aws:waf/geoMatchSet:GeoMatchSet":0,"aws:waf/ipSet:IpSet":0,"aws:waf/rateBasedRule:RateBasedRule":0,"aws:waf/regexMatchSet:RegexMatchSet":0,"aws:waf/regexPatternSet:RegexPatternSet":0,"aws:waf/rule:Rule":0,"aws:waf/ruleGroup:RuleGroup":0,"aws:waf/sizeConstraintSet:SizeConstraintSet":0,"aws:waf/sqlInjectionMatchSet:SqlInjectionMatchSet":0,"aws:waf/webAcl:WebAcl":0,"aws:waf/xssMatchSet:XssMatchSet":0,"aws:wafregional/byteMatchSet:ByteMatchSet":0,"aws:wafregional/geoMatchSet:GeoMatchSet":0,"aws:wafregional/ipSet:IpSet":0,"aws:wafregional/rateBasedRule:RateBasedRule":0,"aws:wafregional/regexMatchSet:RegexMatchSet":0,"aws:wafregional/regexPatternSet:RegexPatternSet":0,"aws:wafregional/rule:Rule":0,"aws:wafregional/ruleGroup:RuleGroup":0,"aws:wafregional/sizeConstraintSet:SizeConstraintSet":0,"aws:wafregional/sqlInjectionMatchSet:SqlInjectionMatchSet":0,"aws:wafregional/webAcl:WebAcl":0,"aws:wafregional/webAclAssociation:WebAclAssociation":0,"aws:wafregional/xssMatchSet:XssMatchSet":0,"aws:wafv2/ipSet:IpSet":0,"aws:wafv2/regexPatternSet:RegexPatternSet":0,"aws:wafv2/ruleGroup:RuleGroup":0,"aws:wafv2/webAcl:WebAcl":0,"aws:wafv2/webAclAssociation:WebAclAssociation":0,"aws:wafv2/webAclLoggingConfiguration:WebAclLoggingConfiguration":0,"aws:worklink/fleet:Fleet":0,"aws:worklink/websiteCertificateAuthorityAssociation:WebsiteCertificateAuthorityAssociation":0,"aws:workspaces/connectionAlias:ConnectionAlias":1,"aws:workspaces/directory:Directory":0,"aws:workspaces/ipGroup:IpGroup":0,"aws:workspaces/workspace:Workspace":0,"aws:xray/encryptionConfig:EncryptionConfig":0,"aws:xray/group:Group":0,"aws:xray/samplingRule:SamplingRule":0},"functions":{"aws:acm/getCertificate:getCertificate":0,"aws:acmpca/getCertificate:getCertificate":0,"aws:acmpca/getCertificateAuthority:getCertificateAuthority":0,"aws:alb/getListener:getListener":0,"aws:alb/getLoadBalancer:getLoadBalancer":0,"aws:alb/getTargetGroup:getTargetGroup":0,"aws:amp/getWorkspace:getWorkspace":0,"aws:amp/getWorkspaces:getWorkspaces":0,"aws:apigateway/getAuthorizer:getAuthorizer":0,"aws:apigateway/getAuthorizers:getAuthorizers":0,"aws:apigateway/getDomainName:getDomainName":0,"aws:apigateway/getExport:getExport":0,"aws:apigateway/getKey:getKey":0,"aws:apigateway/getResource:getResource":0,"aws:apigateway/getRestApi:getRestApi":0,"aws:apigateway/getSdk:getSdk":0,"aws:apigateway/getVpcLink:getVpcLink":0,"aws:apigatewayv2/getApi:getApi":0,"aws:apigatewayv2/getApis:getApis":0,"aws:apigatewayv2/getExport:getExport":0,"aws:apigatewayv2/getVpcLink:getVpcLink":0,"aws:appconfig/getConfigurationProfile:getConfigurationProfile":0,"aws:appconfig/getConfigurationProfiles:getConfigurationProfiles":0,"aws:appconfig/getEnvironment:getEnvironment":0,"aws:appconfig/getEnvironments:getEnvironments":0,"aws:appintegrations/getEventIntegration:getEventIntegration":0,"aws:appmesh/getGatewayRoute:getGatewayRoute":0,"aws:appmesh/getMesh:getMesh":0,"aws:appmesh/getRoute:getRoute":0,"aws:appmesh/getVirtualGateway:getVirtualGateway":0,"aws:appmesh/getVirtualNode:getVirtualNode":0,"aws:appmesh/getVirtualRouter:getVirtualRouter":0,"aws:appmesh/getVirtualService:getVirtualService":0,"aws:apprunner/getHostedZoneId:getHostedZoneId":1,"aws:appstream/getImage:getImage":1,"aws:athena/getNamedQuery:getNamedQuery":0,"aws:auditmanager/getControl:getControl":1,"aws:auditmanager/getFramework:getFramework":1,"aws:autoscaling/getAmiIds:getAmiIds":0,"aws:autoscaling/getGroup:getGroup":0,"aws:backup/getFramework:getFramework":0,"aws:backup/getPlan:getPlan":0,"aws:backup/getReportPlan:getReportPlan":0,"aws:backup/getSelection:getSelection":0,"aws:backup/getVault:getVault":0,"aws:batch/getComputeEnvironment:getComputeEnvironment":0,"aws:batch/getJobDefinition:getJobDefinition":1,"aws:batch/getJobQueue:getJobQueue":0,"aws:batch/getSchedulingPolicy:getSchedulingPolicy":0,"aws:bedrock/getCustomModel:getCustomModel":1,"aws:bedrock/getCustomModels:getCustomModels":1,"aws:bedrockfoundation/getModel:getModel":1,"aws:bedrockfoundation/getModels:getModels":1,"aws:budgets/getBudget:getBudget":0,"aws:chatbot/getSlackWorkspace:getSlackWorkspace":1,"aws:cloudcontrol/getResource:getResource":0,"aws:cloudformation/getCloudFormationType:getCloudFormationType":0,"aws:cloudformation/getExport:getExport":0,"aws:cloudformation/getStack:getStack":0,"aws:cloudfront/getCachePolicy:getCachePolicy":0,"aws:cloudfront/getDistribution:getDistribution":0,"aws:cloudfront/getFunction:getFunction":0,"aws:cloudfront/getLogDeliveryCanonicalUserId:getLogDeliveryCanonicalUserId":0,"aws:cloudfront/getOriginAccessControl:getOriginAccessControl":1,"aws:cloudfront/getOriginAccessIdentities:getOriginAccessIdentities":0,"aws:cloudfront/getOriginAccessIdentity:getOriginAccessIdentity":0,"aws:cloudfront/getOriginRequestPolicy:getOriginRequestPolicy":0,"aws:cloudfront/getRealtimeLogConfig:getRealtimeLogConfig":0,"aws:cloudfront/getResponseHeadersPolicy:getResponseHeadersPolicy":0,"aws:cloudhsmv2/getCluster:getCluster":0,"aws:cloudtrail/getServiceAccount:getServiceAccount":0,"aws:cloudwatch/getEventBus:getEventBus":0,"aws:cloudwatch/getEventConnection:getEventConnection":0,"aws:cloudwatch/getEventSource:getEventSource":0,"aws:cloudwatch/getLogDataProtectionPolicyDocument:getLogDataProtectionPolicyDocument":0,"aws:cloudwatch/getLogGroup:getLogGroup":0,"aws:cloudwatch/getLogGroups:getLogGroups":0,"aws:codeartifact/getAuthorizationToken:getAuthorizationToken":0,"aws:codeartifact/getRepositoryEndpoint:getRepositoryEndpoint":0,"aws:codecatalyst/getDevEnvironment:getDevEnvironment":0,"aws:codecommit/getApprovalRuleTemplate:getApprovalRuleTemplate":0,"aws:codecommit/getRepository:getRepository":0,"aws:codeguruprofiler/getProfilingGroup:getProfilingGroup":1,"aws:codestarconnections/getConnection:getConnection":0,"aws:cognito/getIdentityPool:getIdentityPool":0,"aws:cognito/getUserGroup:getUserGroup":1,"aws:cognito/getUserGroups:getUserGroups":1,"aws:cognito/getUserPool:getUserPool":1,"aws:cognito/getUserPoolClient:getUserPoolClient":0,"aws:cognito/getUserPoolClients:getUserPoolClients":0,"aws:cognito/getUserPoolSigningCertificate:getUserPoolSigningCertificate":0,"aws:cognito/getUserPools:getUserPools":0,"aws:connect/getBotAssociation:getBotAssociation":0,"aws:connect/getContactFlow:getContactFlow":0,"aws:connect/getContactFlowModule:getContactFlowModule":0,"aws:connect/getHoursOfOperation:getHoursOfOperation":0,"aws:connect/getInstance:getInstance":0,"aws:connect/getInstanceStorageConfig:getInstanceStorageConfig":0,"aws:connect/getLambdaFunctionAssociation:getLambdaFunctionAssociation":0,"aws:connect/getPrompt:getPrompt":0,"aws:connect/getQueue:getQueue":0,"aws:connect/getQuickConnect:getQuickConnect":0,"aws:connect/getRoutingProfile:getRoutingProfile":0,"aws:connect/getSecurityProfile:getSecurityProfile":0,"aws:connect/getUser:getUser":0,"aws:connect/getUserHierarchyGroup:getUserHierarchyGroup":0,"aws:connect/getUserHierarchyStructure:getUserHierarchyStructure":0,"aws:connect/getVocabulary:getVocabulary":0,"aws:controltower/getControls:getControls":0,"aws:costexplorer/getCostCategory:getCostCategory":0,"aws:costexplorer/getTags:getTags":0,"aws:cur/getReportDefinition:getReportDefinition":0,"aws:datapipeline/getPipeline:getPipeline":0,"aws:datapipeline/getPipelineDefinition:getPipelineDefinition":0,"aws:datazone/getEnvironmentBlueprint:getEnvironmentBlueprint":1,"aws:devopsguru/getNotificationChannel:getNotificationChannel":1,"aws:devopsguru/getResourceCollection:getResourceCollection":1,"aws:directconnect/getConnection:getConnection":0,"aws:directconnect/getGateway:getGateway":0,"aws:directconnect/getLocation:getLocation":0,"aws:directconnect/getLocations:getLocations":0,"aws:directconnect/getRouterConfiguration:getRouterConfiguration":0,"aws:directoryservice/getDirectory:getDirectory":0,"aws:dms/getCertificate:getCertificate":0,"aws:dms/getEndpoint:getEndpoint":0,"aws:dms/getReplicationInstance:getReplicationInstance":0,"aws:dms/getReplicationSubnetGroup:getReplicationSubnetGroup":0,"aws:dms/getReplicationTask:getReplicationTask":0,"aws:docdb/getEngineVersion:getEngineVersion":0,"aws:docdb/getOrderableDbInstance:getOrderableDbInstance":0,"aws:dynamodb/getTable:getTable":0,"aws:dynamodb/getTableItem:getTableItem":0,"aws:ebs/getDefaultKmsKey:getDefaultKmsKey":0,"aws:ebs/getEbsVolumes:getEbsVolumes":0,"aws:ebs/getEncryptionByDefault:getEncryptionByDefault":0,"aws:ebs/getSnapshot:getSnapshot":0,"aws:ebs/getSnapshotIds:getSnapshotIds":0,"aws:ebs/getVolume:getVolume":0,"aws:ec2/getAmi:getAmi":0,"aws:ec2/getAmiIds:getAmiIds":0,"aws:ec2/getCapacityBlockOffering:getCapacityBlockOffering":1,"aws:ec2/getCoipPool:getCoipPool":0,"aws:ec2/getCoipPools:getCoipPools":0,"aws:ec2/getCustomerGateway:getCustomerGateway":0,"aws:ec2/getDedicatedHost:getDedicatedHost":0,"aws:ec2/getEips:getEips":0,"aws:ec2/getElasticIp:getElasticIp":0,"aws:ec2/getInstance:getInstance":0,"aws:ec2/getInstanceType:getInstanceType":0,"aws:ec2/getInstanceTypeOffering:getInstanceTypeOffering":0,"aws:ec2/getInstanceTypeOfferings:getInstanceTypeOfferings":0,"aws:ec2/getInstanceTypes:getInstanceTypes":0,"aws:ec2/getInstances:getInstances":0,"aws:ec2/getInternetGateway:getInternetGateway":0,"aws:ec2/getIpamPreviewNextCidr:getIpamPreviewNextCidr":0,"aws:ec2/getKeyPair:getKeyPair":0,"aws:ec2/getLaunchConfiguration:getLaunchConfiguration":0,"aws:ec2/getLaunchTemplate:getLaunchTemplate":0,"aws:ec2/getLocalGateway:getLocalGateway":0,"aws:ec2/getLocalGatewayRouteTable:getLocalGatewayRouteTable":0,"aws:ec2/getLocalGatewayRouteTables:getLocalGatewayRouteTables":0,"aws:ec2/getLocalGatewayVirtualInterface:getLocalGatewayVirtualInterface":0,"aws:ec2/getLocalGatewayVirtualInterfaceGroup:getLocalGatewayVirtualInterfaceGroup":0,"aws:ec2/getLocalGatewayVirtualInterfaceGroups:getLocalGatewayVirtualInterfaceGroups":0,"aws:ec2/getLocalGateways:getLocalGateways":0,"aws:ec2/getManagedPrefixList:getManagedPrefixList":0,"aws:ec2/getManagedPrefixLists:getManagedPrefixLists":0,"aws:ec2/getNatGateway:getNatGateway":0,"aws:ec2/getNatGateways:getNatGateways":0,"aws:ec2/getNetworkAcls:getNetworkAcls":0,"aws:ec2/getNetworkInsightsAnalysis:getNetworkInsightsAnalysis":0,"aws:ec2/getNetworkInsightsPath:getNetworkInsightsPath":0,"aws:ec2/getNetworkInterface:getNetworkInterface":0,"aws:ec2/getNetworkInterfaces:getNetworkInterfaces":0,"aws:ec2/getPrefixList:getPrefixList":0,"aws:ec2/getPublicIpv4Pool:getPublicIpv4Pool":0,"aws:ec2/getPublicIpv4Pools:getPublicIpv4Pools":0,"aws:ec2/getRoute:getRoute":0,"aws:ec2/getRouteTable:getRouteTable":0,"aws:ec2/getRouteTables:getRouteTables":0,"aws:ec2/getSecurityGroup:getSecurityGroup":0,"aws:ec2/getSecurityGroups:getSecurityGroups":0,"aws:ec2/getSerialConsoleAccess:getSerialConsoleAccess":0,"aws:ec2/getSpotPrice:getSpotPrice":0,"aws:ec2/getSubnet:getSubnet":0,"aws:ec2/getSubnets:getSubnets":0,"aws:ec2/getTransitGatewayRouteTables:getTransitGatewayRouteTables":0,"aws:ec2/getVpc:getVpc":0,"aws:ec2/getVpcDhcpOptions:getVpcDhcpOptions":0,"aws:ec2/getVpcEndpoint:getVpcEndpoint":0,"aws:ec2/getVpcEndpointService:getVpcEndpointService":0,"aws:ec2/getVpcIamPool:getVpcIamPool":0,"aws:ec2/getVpcIamPoolCidrs:getVpcIamPoolCidrs":0,"aws:ec2/getVpcIamPools:getVpcIamPools":0,"aws:ec2/getVpcIpamPool:getVpcIpamPool":0,"aws:ec2/getVpcIpamPoolCidrs:getVpcIpamPoolCidrs":0,"aws:ec2/getVpcIpamPools:getVpcIpamPools":0,"aws:ec2/getVpcPeeringConnection:getVpcPeeringConnection":0,"aws:ec2/getVpcPeeringConnections:getVpcPeeringConnections":0,"aws:ec2/getVpcs:getVpcs":0,"aws:ec2/getVpnGateway:getVpnGateway":0,"aws:ec2clientvpn/getEndpoint:getEndpoint":0,"aws:ec2transitgateway/getAttachment:getAttachment":0,"aws:ec2transitgateway/getAttachments:getAttachments":0,"aws:ec2transitgateway/getConnect:getConnect":0,"aws:ec2transitgateway/getConnectPeer:getConnectPeer":0,"aws:ec2transitgateway/getDirectConnectGatewayAttachment:getDirectConnectGatewayAttachment":0,"aws:ec2transitgateway/getMulticastDomain:getMulticastDomain":0,"aws:ec2transitgateway/getPeeringAttachment:getPeeringAttachment":0,"aws:ec2transitgateway/getPeeringAttachments:getPeeringAttachments":0,"aws:ec2transitgateway/getRouteTable:getRouteTable":0,"aws:ec2transitgateway/getRouteTableAssociations:getRouteTableAssociations":0,"aws:ec2transitgateway/getRouteTablePropagations:getRouteTablePropagations":0,"aws:ec2transitgateway/getRouteTableRoutes:getRouteTableRoutes":0,"aws:ec2transitgateway/getTransitGateway:getTransitGateway":0,"aws:ec2transitgateway/getVpcAttachment:getVpcAttachment":0,"aws:ec2transitgateway/getVpcAttachments:getVpcAttachments":0,"aws:ec2transitgateway/getVpnAttachment:getVpnAttachment":0,"aws:ecr/getAuthorizationToken:getAuthorizationToken":0,"aws:ecr/getCredentials:getCredentials":0,"aws:ecr/getImage:getImage":0,"aws:ecr/getLifecyclePolicyDocument:getLifecyclePolicyDocument":1,"aws:ecr/getPullThroughCacheRule:getPullThroughCacheRule":0,"aws:ecr/getRepositories:getRepositories":1,"aws:ecr/getRepository:getRepository":0,"aws:ecrpublic/getAuthorizationToken:getAuthorizationToken":0,"aws:ecs/getCluster:getCluster":0,"aws:ecs/getContainerDefinition:getContainerDefinition":0,"aws:ecs/getService:getService":0,"aws:ecs/getTaskDefinition:getTaskDefinition":0,"aws:ecs/getTaskExecution:getTaskExecution":0,"aws:efs/getAccessPoint:getAccessPoint":0,"aws:efs/getAccessPoints:getAccessPoints":0,"aws:efs/getFileSystem:getFileSystem":0,"aws:efs/getMountTarget:getMountTarget":0,"aws:eks/getAccessEntry:getAccessEntry":0,"aws:eks/getAddon:getAddon":0,"aws:eks/getAddonVersion:getAddonVersion":0,"aws:eks/getCluster:getCluster":0,"aws:eks/getClusterAuth:getClusterAuth":0,"aws:eks/getClusters:getClusters":0,"aws:eks/getNodeGroup:getNodeGroup":0,"aws:eks/getNodeGroups:getNodeGroups":0,"aws:elasticache/getCluster:getCluster":0,"aws:elasticache/getReplicationGroup:getReplicationGroup":0,"aws:elasticache/getSubnetGroup:getSubnetGroup":0,"aws:elasticache/getUser:getUser":0,"aws:elasticbeanstalk/getApplication:getApplication":0,"aws:elasticbeanstalk/getHostedZone:getHostedZone":0,"aws:elasticbeanstalk/getSolutionStack:getSolutionStack":0,"aws:elasticsearch/getDomain:getDomain":0,"aws:elb/getHostedZoneId:getHostedZoneId":0,"aws:elb/getLoadBalancer:getLoadBalancer":0,"aws:elb/getServiceAccount:getServiceAccount":0,"aws:emr/getReleaseLabels:getReleaseLabels":0,"aws:emr/getSupportedInstanceTypes:getSupportedInstanceTypes":1,"aws:emrcontainers/getVirtualCluster:getVirtualCluster":0,"aws:fsx/getOntapFileSystem:getOntapFileSystem":0,"aws:fsx/getOntapStorageVirtualMachine:getOntapStorageVirtualMachine":0,"aws:fsx/getOntapStorageVirtualMachines:getOntapStorageVirtualMachines":0,"aws:fsx/getOpenZfsSnapshot:getOpenZfsSnapshot":0,"aws:fsx/getWindowsFileSystem:getWindowsFileSystem":0,"aws:globalaccelerator/getAccelerator:getAccelerator":1,"aws:globalaccelerator/getCustomRoutingAccelerator:getCustomRoutingAccelerator":0,"aws:glue/getCatalogTable:getCatalogTable":0,"aws:glue/getConnection:getConnection":0,"aws:glue/getDataCatalogEncryptionSettings:getDataCatalogEncryptionSettings":0,"aws:glue/getScript:getScript":0,"aws:grafana/getWorkspace:getWorkspace":0,"aws:guardduty/getDetector:getDetector":0,"aws:guardduty/getFindingIds:getFindingIds":1,"aws:iam/getAccessKeys:getAccessKeys":0,"aws:iam/getAccountAlias:getAccountAlias":0,"aws:iam/getGroup:getGroup":0,"aws:iam/getInstanceProfile:getInstanceProfile":0,"aws:iam/getInstanceProfiles:getInstanceProfiles":0,"aws:iam/getOpenIdConnectProvider:getOpenIdConnectProvider":0,"aws:iam/getPolicy:getPolicy":0,"aws:iam/getPolicyDocument:getPolicyDocument":0,"aws:iam/getPrincipalPolicySimulation:getPrincipalPolicySimulation":0,"aws:iam/getRole:getRole":0,"aws:iam/getRoles:getRoles":0,"aws:iam/getSamlProvider:getSamlProvider":0,"aws:iam/getServerCertificate:getServerCertificate":0,"aws:iam/getSessionContext:getSessionContext":0,"aws:iam/getUser:getUser":0,"aws:iam/getUserSshKey:getUserSshKey":0,"aws:iam/getUsers:getUsers":0,"aws:identitystore/getGroup:getGroup":0,"aws:identitystore/getGroups:getGroups":1,"aws:identitystore/getUser:getUser":0,"aws:imagebuilder/getComponent:getComponent":0,"aws:imagebuilder/getComponents:getComponents":0,"aws:imagebuilder/getContainerRecipe:getContainerRecipe":0,"aws:imagebuilder/getContainerRecipes:getContainerRecipes":0,"aws:imagebuilder/getDistributionConfiguration:getDistributionConfiguration":0,"aws:imagebuilder/getDistributionConfigurations:getDistributionConfigurations":0,"aws:imagebuilder/getImage:getImage":0,"aws:imagebuilder/getImagePipeline:getImagePipeline":0,"aws:imagebuilder/getImagePipelines:getImagePipelines":0,"aws:imagebuilder/getImageRecipe:getImageRecipe":0,"aws:imagebuilder/getImageRecipes:getImageRecipes":0,"aws:imagebuilder/getInfrastructureConfiguration:getInfrastructureConfiguration":0,"aws:imagebuilder/getInfrastructureConfigurations:getInfrastructureConfigurations":0,"aws:index/getArn:getArn":1,"aws:index/getAvailabilityZone:getAvailabilityZone":0,"aws:index/getAvailabilityZones:getAvailabilityZones":0,"aws:index/getBillingServiceAccount:getBillingServiceAccount":1,"aws:index/getCallerIdentity:getCallerIdentity":1,"aws:index/getDefaultTags:getDefaultTags":1,"aws:index/getIpRanges:getIpRanges":1,"aws:index/getPartition:getPartition":1,"aws:index/getRegion:getRegion":1,"aws:index/getRegions:getRegions":1,"aws:index/getService:getService":1,"aws:index/getServicePrincipal:getServicePrincipal":1,"aws:inspector/getRulesPackages:getRulesPackages":0,"aws:iot/getEndpoint:getEndpoint":0,"aws:iot/getRegistrationCode:getRegistrationCode":0,"aws:ivs/getStreamKey:getStreamKey":0,"aws:kendra/getExperience:getExperience":0,"aws:kendra/getFaq:getFaq":0,"aws:kendra/getIndex:getIndex":0,"aws:kendra/getQuerySuggestionsBlockList:getQuerySuggestionsBlockList":0,"aws:kendra/getThesaurus:getThesaurus":0,"aws:kinesis/getFirehoseDeliveryStream:getFirehoseDeliveryStream":0,"aws:kinesis/getStream:getStream":0,"aws:kinesis/getStreamConsumer:getStreamConsumer":0,"aws:kms/getAlias:getAlias":0,"aws:kms/getCipherText:getCipherText":0,"aws:kms/getCustomKeyStore:getCustomKeyStore":0,"aws:kms/getKey:getKey":0,"aws:kms/getPublicKey:getPublicKey":0,"aws:kms/getSecret:getSecret":0,"aws:kms/getSecrets:getSecrets":0,"aws:lakeformation/getDataLakeSettings:getDataLakeSettings":0,"aws:lakeformation/getPermissions:getPermissions":0,"aws:lakeformation/getResource:getResource":0,"aws:lambda/getAlias:getAlias":0,"aws:lambda/getCodeSigningConfig:getCodeSigningConfig":0,"aws:lambda/getFunction:getFunction":0,"aws:lambda/getFunctionUrl:getFunctionUrl":0,"aws:lambda/getFunctions:getFunctions":0,"aws:lambda/getInvocation:getInvocation":0,"aws:lambda/getLayerVersion:getLayerVersion":0,"aws:lb/getHostedZoneId:getHostedZoneId":0,"aws:lb/getLbs:getLbs":0,"aws:lb/getListener:getListener":0,"aws:lb/getLoadBalancer:getLoadBalancer":0,"aws:lb/getTargetGroup:getTargetGroup":0,"aws:lb/getTrustStore:getTrustStore":0,"aws:lex/getBot:getBot":0,"aws:lex/getBotAlias:getBotAlias":0,"aws:lex/getIntent:getIntent":0,"aws:lex/getSlotType:getSlotType":0,"aws:licensemanager/getLicenseGrants:getLicenseGrants":0,"aws:licensemanager/getReceivedLicense:getReceivedLicense":0,"aws:licensemanager/getReceivedLicenses:getReceivedLicenses":0,"aws:location/getGeofenceCollection:getGeofenceCollection":0,"aws:location/getMap:getMap":0,"aws:location/getPlaceIndex:getPlaceIndex":0,"aws:location/getRouteCalculator:getRouteCalculator":0,"aws:location/getTracker:getTracker":0,"aws:location/getTrackerAssociation:getTrackerAssociation":0,"aws:location/getTrackerAssociations:getTrackerAssociations":0,"aws:mediaconvert/getQueue:getQueue":0,"aws:medialive/getInput:getInput":1,"aws:memorydb/getAcl:getAcl":0,"aws:memorydb/getCluster:getCluster":0,"aws:memorydb/getParameterGroup:getParameterGroup":0,"aws:memorydb/getSnapshot:getSnapshot":0,"aws:memorydb/getSubnetGroup:getSubnetGroup":0,"aws:memorydb/getUser:getUser":0,"aws:mq/getBroker:getBroker":0,"aws:mq/getBrokerEngineTypes:getBrokerEngineTypes":0,"aws:mq/getInstanceTypeOfferings:getInstanceTypeOfferings":0,"aws:msk/getBootstrapBrokers:getBootstrapBrokers":0,"aws:msk/getBrokerNodes:getBrokerNodes":0,"aws:msk/getCluster:getCluster":0,"aws:msk/getConfiguration:getConfiguration":0,"aws:msk/getKafkaVersion:getKafkaVersion":0,"aws:msk/getVpcConnection:getVpcConnection":0,"aws:mskconnect/getConnector:getConnector":0,"aws:mskconnect/getCustomPlugin:getCustomPlugin":0,"aws:mskconnect/getWorkerConfiguration:getWorkerConfiguration":0,"aws:neptune/getEngineVersion:getEngineVersion":0,"aws:neptune/getOrderableDbInstance:getOrderableDbInstance":0,"aws:networkfirewall/getFirewall:getFirewall":0,"aws:networkfirewall/getFirewallPolicy:getFirewallPolicy":0,"aws:networkfirewall/getResourcePolicy:getResourcePolicy":0,"aws:networkmanager/getConnection:getConnection":0,"aws:networkmanager/getConnections:getConnections":0,"aws:networkmanager/getCoreNetworkPolicyDocument:getCoreNetworkPolicyDocument":0,"aws:networkmanager/getDevice:getDevice":0,"aws:networkmanager/getDevices:getDevices":0,"aws:networkmanager/getGlobalNetwork:getGlobalNetwork":0,"aws:networkmanager/getGlobalNetworks:getGlobalNetworks":0,"aws:networkmanager/getLink:getLink":0,"aws:networkmanager/getLinks:getLinks":0,"aws:networkmanager/getSite:getSite":0,"aws:networkmanager/getSites:getSites":0,"aws:oam/getLink:getLink":0,"aws:oam/getLinks:getLinks":0,"aws:oam/getSink:getSink":0,"aws:oam/getSinks:getSinks":0,"aws:opensearch/getDomain:getDomain":0,"aws:opensearch/getServerlessAccessPolicy:getServerlessAccessPolicy":1,"aws:opensearch/getServerlessCollection:getServerlessCollection":1,"aws:opensearch/getServerlessLifecyclePolicy:getServerlessLifecyclePolicy":1,"aws:opensearch/getServerlessSecurityConfig:getServerlessSecurityConfig":1,"aws:opensearch/getServerlessSecurityPolicy:getServerlessSecurityPolicy":0,"aws:opensearch/getServerlessVpcEndpoint:getServerlessVpcEndpoint":0,"aws:organizations/getDelegatedAdministrators:getDelegatedAdministrators":0,"aws:organizations/getDelegatedServices:getDelegatedServices":0,"aws:organizations/getOrganization:getOrganization":0,"aws:organizations/getOrganizationalUnit:getOrganizationalUnit":0,"aws:organizations/getOrganizationalUnitChildAccounts:getOrganizationalUnitChildAccounts":0,"aws:organizations/getOrganizationalUnitDescendantAccounts:getOrganizationalUnitDescendantAccounts":0,"aws:organizations/getOrganizationalUnits:getOrganizationalUnits":0,"aws:organizations/getPolicies:getPolicies":0,"aws:organizations/getPoliciesForTarget:getPoliciesForTarget":0,"aws:organizations/getPolicy:getPolicy":0,"aws:organizations/getResourceTags:getResourceTags":0,"aws:outposts/getAsset:getAsset":0,"aws:outposts/getAssets:getAssets":0,"aws:outposts/getOutpost:getOutpost":0,"aws:outposts/getOutpostInstanceType:getOutpostInstanceType":0,"aws:outposts/getOutpostInstanceTypes:getOutpostInstanceTypes":0,"aws:outposts/getOutposts:getOutposts":0,"aws:outposts/getSite:getSite":0,"aws:outposts/getSites:getSites":0,"aws:polly/getVoices:getVoices":1,"aws:pricing/getProduct:getProduct":0,"aws:qldb/getLedger:getLedger":0,"aws:quicksight/getDataSet:getDataSet":0,"aws:quicksight/getQuicksightGroup:getQuicksightGroup":0,"aws:quicksight/getQuicksightUser:getQuicksightUser":0,"aws:quicksight/getTheme:getTheme":0,"aws:ram/getResourceShare:getResourceShare":0,"aws:rds/getCertificate:getCertificate":0,"aws:rds/getCluster:getCluster":0,"aws:rds/getClusterSnapshot:getClusterSnapshot":0,"aws:rds/getClusters:getClusters":0,"aws:rds/getEngineVersion:getEngineVersion":0,"aws:rds/getEventCategories:getEventCategories":0,"aws:rds/getInstance:getInstance":0,"aws:rds/getInstances:getInstances":0,"aws:rds/getOrderableDbInstance:getOrderableDbInstance":0,"aws:rds/getParameterGroup:getParameterGroup":0,"aws:rds/getProxy:getProxy":0,"aws:rds/getReservedInstanceOffering:getReservedInstanceOffering":0,"aws:rds/getSnapshot:getSnapshot":0,"aws:rds/getSubnetGroup:getSubnetGroup":0,"aws:redshift/getCluster:getCluster":0,"aws:redshift/getClusterCredentials:getClusterCredentials":0,"aws:redshift/getDataShares:getDataShares":1,"aws:redshift/getOrderableCluster:getOrderableCluster":0,"aws:redshift/getProducerDataShares:getProducerDataShares":1,"aws:redshift/getServiceAccount:getServiceAccount":0,"aws:redshift/getSubnetGroup:getSubnetGroup":0,"aws:redshiftserverless/getCredentials:getCredentials":0,"aws:redshiftserverless/getNamespace:getNamespace":0,"aws:redshiftserverless/getWorkgroup:getWorkgroup":0,"aws:resourceexplorer/search:Search":1,"aws:resourcegroupstaggingapi/getResources:getResources":0,"aws:route53/getDelegationSet:getDelegationSet":0,"aws:route53/getQueryLogConfig:getQueryLogConfig":0,"aws:route53/getResolverEndpoint:getResolverEndpoint":0,"aws:route53/getResolverFirewallConfig:getResolverFirewallConfig":0,"aws:route53/getResolverFirewallDomainList:getResolverFirewallDomainList":0,"aws:route53/getResolverFirewallRuleGroup:getResolverFirewallRuleGroup":0,"aws:route53/getResolverFirewallRuleGroupAssociation:getResolverFirewallRuleGroupAssociation":0,"aws:route53/getResolverFirewallRules:getResolverFirewallRules":0,"aws:route53/getResolverRule:getResolverRule":0,"aws:route53/getResolverRules:getResolverRules":0,"aws:route53/getTrafficPolicyDocument:getTrafficPolicyDocument":0,"aws:route53/getZone:getZone":0,"aws:s3/getAccountPublicAccessBlock:getAccountPublicAccessBlock":0,"aws:s3/getBucket:getBucket":0,"aws:s3/getBucketObject:getBucketObject":0,"aws:s3/getBucketObjects:getBucketObjects":0,"aws:s3/getBucketPolicy:getBucketPolicy":0,"aws:s3/getCanonicalUserId:getCanonicalUserId":0,"aws:s3/getDirectoryBuckets:getDirectoryBuckets":1,"aws:s3/getObject:getObject":0,"aws:s3/getObjects:getObjects":0,"aws:s3control/getMultiRegionAccessPoint:getMultiRegionAccessPoint":0,"aws:sagemaker/getPrebuiltEcrImage:getPrebuiltEcrImage":0,"aws:secretsmanager/getRandomPassword:getRandomPassword":0,"aws:secretsmanager/getSecret:getSecret":0,"aws:secretsmanager/getSecretRotation:getSecretRotation":0,"aws:secretsmanager/getSecretVersion:getSecretVersion":0,"aws:secretsmanager/getSecrets:getSecrets":0,"aws:serverlessrepository/getApplication:getApplication":0,"aws:servicecatalog/getAppregistryApplication:getAppregistryApplication":1,"aws:servicecatalog/getConstraint:getConstraint":0,"aws:servicecatalog/getLaunchPaths:getLaunchPaths":0,"aws:servicecatalog/getPortfolio:getPortfolio":0,"aws:servicecatalog/getPortfolioConstraints:getPortfolioConstraints":0,"aws:servicecatalog/getProduct:getProduct":0,"aws:servicecatalog/getProvisioningArtifacts:getProvisioningArtifacts":0,"aws:servicediscovery/getDnsNamespace:getDnsNamespace":0,"aws:servicediscovery/getHttpNamespace:getHttpNamespace":0,"aws:servicediscovery/getService:getService":0,"aws:servicequotas/getService:getService":0,"aws:servicequotas/getServiceQuota:getServiceQuota":0,"aws:servicequotas/getTemplates:getTemplates":1,"aws:ses/getActiveReceiptRuleSet:getActiveReceiptRuleSet":0,"aws:ses/getDomainIdentity:getDomainIdentity":0,"aws:ses/getEmailIdentity:getEmailIdentity":0,"aws:sesv2/getConfigurationSet:getConfigurationSet":0,"aws:sesv2/getDedicatedIpPool:getDedicatedIpPool":0,"aws:sesv2/getEmailIdentity:getEmailIdentity":0,"aws:sesv2/getEmailIdentityMailFromAttributes:getEmailIdentityMailFromAttributes":0,"aws:sfn/getActivity:getActivity":0,"aws:sfn/getAlias:getAlias":0,"aws:sfn/getStateMachine:getStateMachine":0,"aws:sfn/getStateMachineVersions:getStateMachineVersions":0,"aws:signer/getSigningJob:getSigningJob":0,"aws:signer/getSigningProfile:getSigningProfile":0,"aws:sns/getTopic:getTopic":0,"aws:sqs/getQueue:getQueue":0,"aws:sqs/getQueues:getQueues":0,"aws:ssm/getContactsRotation:getContactsRotation":1,"aws:ssm/getDocument:getDocument":0,"aws:ssm/getInstances:getInstances":0,"aws:ssm/getMaintenanceWindows:getMaintenanceWindows":0,"aws:ssm/getParameter:getParameter":0,"aws:ssm/getParametersByPath:getParametersByPath":0,"aws:ssm/getPatchBaseline:getPatchBaseline":0,"aws:ssmcontacts/getContact:getContact":0,"aws:ssmcontacts/getContactChannel:getContactChannel":0,"aws:ssmcontacts/getPlan:getPlan":0,"aws:ssmincidents/getReplicationSet:getReplicationSet":0,"aws:ssmincidents/getResponsePlan:getResponsePlan":0,"aws:ssoadmin/getApplication:getApplication":1,"aws:ssoadmin/getApplicationAssignments:getApplicationAssignments":1,"aws:ssoadmin/getApplicationProviders:getApplicationProviders":1,"aws:ssoadmin/getInstances:getInstances":0,"aws:ssoadmin/getPermissionSet:getPermissionSet":0,"aws:ssoadmin/getPrincipalApplicationAssignments:getPrincipalApplicationAssignments":1,"aws:storagegateway/getLocalDisk:getLocalDisk":0,"aws:timestreamwrite/getDatabase:getDatabase":1,"aws:timestreamwrite/getTable:getTable":1,"aws:transfer/getConnector:getConnector":1,"aws:transfer/getServer:getServer":0,"aws:verifiedpermissions/getPolicyStore:getPolicyStore":1,"aws:vpc/getSecurityGroupRule:getSecurityGroupRule":1,"aws:vpc/getSecurityGroupRules:getSecurityGroupRules":1,"aws:vpclattice/getAuthPolicy:getAuthPolicy":0,"aws:vpclattice/getListener:getListener":0,"aws:vpclattice/getResourcePolicy:getResourcePolicy":0,"aws:vpclattice/getService:getService":0,"aws:vpclattice/getServiceNetwork:getServiceNetwork":0,"aws:waf/getIpset:getIpset":0,"aws:waf/getRateBasedRule:getRateBasedRule":0,"aws:waf/getRule:getRule":0,"aws:waf/getSubscribedRuleGroup:getSubscribedRuleGroup":0,"aws:waf/getWebAcl:getWebAcl":0,"aws:wafregional/getIpset:getIpset":0,"aws:wafregional/getRateBasedMod:getRateBasedMod":0,"aws:wafregional/getRule:getRule":0,"aws:wafregional/getSubscribedRuleGroup:getSubscribedRuleGroup":0,"aws:wafregional/getWebAcl:getWebAcl":0,"aws:wafv2/getIpSet:getIpSet":0,"aws:wafv2/getRegexPatternSet:getRegexPatternSet":0,"aws:wafv2/getRuleGroup:getRuleGroup":0,"aws:wafv2/getWebAcl:getWebAcl":0,"aws:workspaces/getBundle:getBundle":0,"aws:workspaces/getDirectory:getDirectory":0,"aws:workspaces/getImage:getImage":0,"aws:workspaces/getWorkspace:getWorkspace":0}}} \ No newline at end of file +{"auto-settings":{"resources":{"aws_eks_cluster":{"maxItemsOneOverrides":{"certificate_authority":true}},"aws_lexv2models_slot":{"maxItemsOneOverrides":{"value_elicitation_setting.$.prompt_specification.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.prompt_specification.$.message_group.$.variation.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.continue_response.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.continue_response.$.message_group.$.variation.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.still_waiting_response.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.still_waiting_response.$.message_group.$.variation.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.waiting_response.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.waiting_response.$.message_group.$.variation.$.custom_payload":false}},"aws_sagemaker_app_image_config":{"maxItemsOneOverrides":{"kernel_gateway_image_config.$.kernel_spec":true}},"aws_securitylake_subscriber":{"maxItemsOneOverrides":{"source":true}}},"datasources":{"aws_vpc_ipam_pool":{"renames":["aws:ec2/getVpcIamPool:getVpcIamPool"]},"aws_vpc_ipam_pool_cidrs":{"renames":["aws:ec2/getVpcIamPoolCidrs:getVpcIamPoolCidrs"]},"aws_vpc_ipam_pools":{"renames":["aws:ec2/getVpcIamPools:getVpcIamPools"]}}},"mux":{"resources":{"aws:accessanalyzer/analyzer:Analyzer":0,"aws:accessanalyzer/archiveRule:ArchiveRule":0,"aws:account/alternativeContact:AlternativeContact":0,"aws:account/primaryContact:PrimaryContact":0,"aws:account/region:Region":0,"aws:acm/certificate:Certificate":0,"aws:acm/certificateValidation:CertificateValidation":0,"aws:acmpca/certificate:Certificate":0,"aws:acmpca/certificateAuthority:CertificateAuthority":0,"aws:acmpca/certificateAuthorityCertificate:CertificateAuthorityCertificate":0,"aws:acmpca/permission:Permission":0,"aws:acmpca/policy:Policy":0,"aws:alb/listener:Listener":0,"aws:alb/listenerCertificate:ListenerCertificate":0,"aws:alb/listenerRule:ListenerRule":0,"aws:alb/loadBalancer:LoadBalancer":0,"aws:alb/targetGroup:TargetGroup":0,"aws:alb/targetGroupAttachment:TargetGroupAttachment":0,"aws:amp/alertManagerDefinition:AlertManagerDefinition":0,"aws:amp/ruleGroupNamespace:RuleGroupNamespace":0,"aws:amp/scraper:Scraper":1,"aws:amp/workspace:Workspace":0,"aws:amplify/app:App":0,"aws:amplify/backendEnvironment:BackendEnvironment":0,"aws:amplify/branch:Branch":0,"aws:amplify/domainAssociation:DomainAssociation":0,"aws:amplify/webhook:Webhook":0,"aws:apigateway/account:Account":0,"aws:apigateway/apiKey:ApiKey":0,"aws:apigateway/authorizer:Authorizer":0,"aws:apigateway/basePathMapping:BasePathMapping":0,"aws:apigateway/clientCertificate:ClientCertificate":0,"aws:apigateway/deployment:Deployment":0,"aws:apigateway/documentationPart:DocumentationPart":0,"aws:apigateway/documentationVersion:DocumentationVersion":0,"aws:apigateway/domainName:DomainName":0,"aws:apigateway/integration:Integration":0,"aws:apigateway/integrationResponse:IntegrationResponse":0,"aws:apigateway/method:Method":0,"aws:apigateway/methodResponse:MethodResponse":0,"aws:apigateway/methodSettings:MethodSettings":0,"aws:apigateway/model:Model":0,"aws:apigateway/requestValidator:RequestValidator":0,"aws:apigateway/resource:Resource":0,"aws:apigateway/response:Response":0,"aws:apigateway/restApi:RestApi":0,"aws:apigateway/restApiPolicy:RestApiPolicy":0,"aws:apigateway/stage:Stage":0,"aws:apigateway/usagePlan:UsagePlan":0,"aws:apigateway/usagePlanKey:UsagePlanKey":0,"aws:apigateway/vpcLink:VpcLink":0,"aws:apigatewayv2/api:Api":0,"aws:apigatewayv2/apiMapping:ApiMapping":0,"aws:apigatewayv2/authorizer:Authorizer":0,"aws:apigatewayv2/deployment:Deployment":0,"aws:apigatewayv2/domainName:DomainName":0,"aws:apigatewayv2/integration:Integration":0,"aws:apigatewayv2/integrationResponse:IntegrationResponse":0,"aws:apigatewayv2/model:Model":0,"aws:apigatewayv2/route:Route":0,"aws:apigatewayv2/routeResponse:RouteResponse":0,"aws:apigatewayv2/stage:Stage":0,"aws:apigatewayv2/vpcLink:VpcLink":0,"aws:appautoscaling/policy:Policy":0,"aws:appautoscaling/scheduledAction:ScheduledAction":0,"aws:appautoscaling/target:Target":0,"aws:appconfig/application:Application":0,"aws:appconfig/configurationProfile:ConfigurationProfile":0,"aws:appconfig/deployment:Deployment":0,"aws:appconfig/deploymentStrategy:DeploymentStrategy":0,"aws:appconfig/environment:Environment":1,"aws:appconfig/eventIntegration:EventIntegration":0,"aws:appconfig/extension:Extension":0,"aws:appconfig/extensionAssociation:ExtensionAssociation":0,"aws:appconfig/hostedConfigurationVersion:HostedConfigurationVersion":0,"aws:appfabric/appAuthorization:AppAuthorization":1,"aws:appfabric/appAuthorizationConnection:AppAuthorizationConnection":1,"aws:appfabric/appBundle:AppBundle":1,"aws:appfabric/ingestion:Ingestion":1,"aws:appfabric/ingestionDestination:IngestionDestination":1,"aws:appflow/connectorProfile:ConnectorProfile":0,"aws:appflow/flow:Flow":0,"aws:appintegrations/dataIntegration:DataIntegration":0,"aws:applicationinsights/application:Application":0,"aws:appmesh/gatewayRoute:GatewayRoute":0,"aws:appmesh/mesh:Mesh":0,"aws:appmesh/route:Route":0,"aws:appmesh/virtualGateway:VirtualGateway":0,"aws:appmesh/virtualNode:VirtualNode":0,"aws:appmesh/virtualRouter:VirtualRouter":0,"aws:appmesh/virtualService:VirtualService":0,"aws:apprunner/autoScalingConfigurationVersion:AutoScalingConfigurationVersion":0,"aws:apprunner/connection:Connection":0,"aws:apprunner/customDomainAssociation:CustomDomainAssociation":0,"aws:apprunner/defaultAutoScalingConfigurationVersion:DefaultAutoScalingConfigurationVersion":1,"aws:apprunner/deployment:Deployment":1,"aws:apprunner/observabilityConfiguration:ObservabilityConfiguration":0,"aws:apprunner/service:Service":0,"aws:apprunner/vpcConnector:VpcConnector":0,"aws:apprunner/vpcIngressConnection:VpcIngressConnection":0,"aws:appstream/directoryConfig:DirectoryConfig":0,"aws:appstream/fleet:Fleet":0,"aws:appstream/fleetStackAssociation:FleetStackAssociation":0,"aws:appstream/imageBuilder:ImageBuilder":0,"aws:appstream/stack:Stack":0,"aws:appstream/user:User":0,"aws:appstream/userStackAssociation:UserStackAssociation":0,"aws:appsync/apiCache:ApiCache":0,"aws:appsync/apiKey:ApiKey":0,"aws:appsync/dataSource:DataSource":0,"aws:appsync/domainName:DomainName":0,"aws:appsync/domainNameApiAssociation:DomainNameApiAssociation":0,"aws:appsync/function:Function":0,"aws:appsync/graphQLApi:GraphQLApi":0,"aws:appsync/resolver:Resolver":0,"aws:appsync/type:Type":0,"aws:athena/dataCatalog:DataCatalog":0,"aws:athena/database:Database":0,"aws:athena/namedQuery:NamedQuery":0,"aws:athena/preparedStatement:PreparedStatement":0,"aws:athena/workgroup:Workgroup":0,"aws:auditmanager/accountRegistration:AccountRegistration":1,"aws:auditmanager/assessment:Assessment":1,"aws:auditmanager/assessmentDelegation:AssessmentDelegation":1,"aws:auditmanager/assessmentReport:AssessmentReport":1,"aws:auditmanager/control:Control":1,"aws:auditmanager/framework:Framework":1,"aws:auditmanager/frameworkShare:FrameworkShare":1,"aws:auditmanager/organizationAdminAccountRegistration:OrganizationAdminAccountRegistration":1,"aws:autoscaling/attachment:Attachment":0,"aws:autoscaling/group:Group":0,"aws:autoscaling/lifecycleHook:LifecycleHook":0,"aws:autoscaling/notification:Notification":0,"aws:autoscaling/policy:Policy":0,"aws:autoscaling/schedule:Schedule":0,"aws:autoscaling/tag:Tag":0,"aws:autoscaling/trafficSourceAttachment:TrafficSourceAttachment":0,"aws:autoscalingplans/scalingPlan:ScalingPlan":0,"aws:backup/framework:Framework":0,"aws:backup/globalSettings:GlobalSettings":0,"aws:backup/plan:Plan":0,"aws:backup/regionSettings:RegionSettings":0,"aws:backup/reportPlan:ReportPlan":0,"aws:backup/selection:Selection":0,"aws:backup/vault:Vault":0,"aws:backup/vaultLockConfiguration:VaultLockConfiguration":0,"aws:backup/vaultNotifications:VaultNotifications":0,"aws:backup/vaultPolicy:VaultPolicy":0,"aws:batch/computeEnvironment:ComputeEnvironment":0,"aws:batch/jobDefinition:JobDefinition":0,"aws:batch/jobQueue:JobQueue":1,"aws:batch/schedulingPolicy:SchedulingPolicy":0,"aws:bcmdata/export:Export":1,"aws:bedrock/agentAgent:AgentAgent":1,"aws:bedrock/agentAgentActionGroup:AgentAgentActionGroup":1,"aws:bedrock/agentAgentAlias:AgentAgentAlias":1,"aws:bedrock/agentAgentKnowledgeBaseAssociation:AgentAgentKnowledgeBaseAssociation":1,"aws:bedrock/agentDataSource:AgentDataSource":1,"aws:bedrock/agentKnowledgeBase:AgentKnowledgeBase":1,"aws:bedrock/customModel:CustomModel":1,"aws:bedrock/provisionedModelThroughput:ProvisionedModelThroughput":1,"aws:bedrockmodel/invocationLoggingConfiguration:InvocationLoggingConfiguration":1,"aws:budgets/budget:Budget":0,"aws:budgets/budgetAction:BudgetAction":0,"aws:cfg/aggregateAuthorization:AggregateAuthorization":0,"aws:cfg/configurationAggregator:ConfigurationAggregator":0,"aws:cfg/conformancePack:ConformancePack":0,"aws:cfg/deliveryChannel:DeliveryChannel":0,"aws:cfg/organizationConformancePack:OrganizationConformancePack":0,"aws:cfg/organizationCustomPolicyRule:OrganizationCustomPolicyRule":0,"aws:cfg/organizationCustomRule:OrganizationCustomRule":0,"aws:cfg/organizationManagedRule:OrganizationManagedRule":0,"aws:cfg/recorder:Recorder":0,"aws:cfg/recorderStatus:RecorderStatus":0,"aws:cfg/remediationConfiguration:RemediationConfiguration":0,"aws:cfg/retentionConfiguration:RetentionConfiguration":1,"aws:cfg/rule:Rule":0,"aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration":1,"aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration":1,"aws:chime/sdkvoiceGlobalSettings:SdkvoiceGlobalSettings":0,"aws:chime/sdkvoiceSipMediaApplication:SdkvoiceSipMediaApplication":0,"aws:chime/sdkvoiceSipRule:SdkvoiceSipRule":0,"aws:chime/sdkvoiceVoiceProfileDomain:SdkvoiceVoiceProfileDomain":0,"aws:chime/voiceConnector:VoiceConnector":0,"aws:chime/voiceConnectorGroup:VoiceConnectorGroup":0,"aws:chime/voiceConnectorLogging:VoiceConnectorLogging":0,"aws:chime/voiceConnectorOrganization:VoiceConnectorOrganization":0,"aws:chime/voiceConnectorStreaming:VoiceConnectorStreaming":0,"aws:chime/voiceConnectorTermination:VoiceConnectorTermination":0,"aws:chime/voiceConnectorTerminationCredentials:VoiceConnectorTerminationCredentials":0,"aws:chimesdkmediapipelines/mediaInsightsPipelineConfiguration:MediaInsightsPipelineConfiguration":0,"aws:cleanrooms/collaboration:Collaboration":0,"aws:cleanrooms/configuredTable:ConfiguredTable":0,"aws:cloud9/environmentEC2:EnvironmentEC2":0,"aws:cloud9/environmentMembership:EnvironmentMembership":0,"aws:cloudcontrol/resource:Resource":0,"aws:cloudformation/cloudFormationType:CloudFormationType":0,"aws:cloudformation/stack:Stack":0,"aws:cloudformation/stackSet:StackSet":0,"aws:cloudformation/stackSetInstance:StackSetInstance":0,"aws:cloudfront/cachePolicy:CachePolicy":0,"aws:cloudfront/continuousDeploymentPolicy:ContinuousDeploymentPolicy":1,"aws:cloudfront/distribution:Distribution":0,"aws:cloudfront/fieldLevelEncryptionConfig:FieldLevelEncryptionConfig":0,"aws:cloudfront/fieldLevelEncryptionProfile:FieldLevelEncryptionProfile":0,"aws:cloudfront/function:Function":0,"aws:cloudfront/keyGroup:KeyGroup":0,"aws:cloudfront/keyValueStore:KeyValueStore":1,"aws:cloudfront/keyvaluestoreKey:KeyvaluestoreKey":1,"aws:cloudfront/monitoringSubscription:MonitoringSubscription":0,"aws:cloudfront/originAccessControl:OriginAccessControl":0,"aws:cloudfront/originAccessIdentity:OriginAccessIdentity":0,"aws:cloudfront/originRequestPolicy:OriginRequestPolicy":0,"aws:cloudfront/publicKey:PublicKey":0,"aws:cloudfront/realtimeLogConfig:RealtimeLogConfig":0,"aws:cloudfront/responseHeadersPolicy:ResponseHeadersPolicy":0,"aws:cloudhsmv2/cluster:Cluster":0,"aws:cloudhsmv2/hsm:Hsm":0,"aws:cloudsearch/domain:Domain":0,"aws:cloudsearch/domainServiceAccessPolicy:DomainServiceAccessPolicy":0,"aws:cloudtrail/eventDataStore:EventDataStore":0,"aws:cloudtrail/trail:Trail":0,"aws:cloudwatch/compositeAlarm:CompositeAlarm":0,"aws:cloudwatch/dashboard:Dashboard":0,"aws:cloudwatch/eventApiDestination:EventApiDestination":0,"aws:cloudwatch/eventArchive:EventArchive":0,"aws:cloudwatch/eventBus:EventBus":0,"aws:cloudwatch/eventBusPolicy:EventBusPolicy":0,"aws:cloudwatch/eventConnection:EventConnection":0,"aws:cloudwatch/eventEndpoint:EventEndpoint":0,"aws:cloudwatch/eventPermission:EventPermission":0,"aws:cloudwatch/eventRule:EventRule":0,"aws:cloudwatch/eventTarget:EventTarget":0,"aws:cloudwatch/internetMonitor:InternetMonitor":0,"aws:cloudwatch/logAccountPolicy:LogAccountPolicy":0,"aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy":0,"aws:cloudwatch/logDestination:LogDestination":0,"aws:cloudwatch/logDestinationPolicy:LogDestinationPolicy":0,"aws:cloudwatch/logGroup:LogGroup":0,"aws:cloudwatch/logMetricFilter:LogMetricFilter":0,"aws:cloudwatch/logResourcePolicy:LogResourcePolicy":0,"aws:cloudwatch/logStream:LogStream":0,"aws:cloudwatch/logSubscriptionFilter:LogSubscriptionFilter":0,"aws:cloudwatch/metricAlarm:MetricAlarm":0,"aws:cloudwatch/metricStream:MetricStream":0,"aws:cloudwatch/queryDefinition:QueryDefinition":0,"aws:codeartifact/domain:Domain":0,"aws:codeartifact/domainPermissions:DomainPermissions":0,"aws:codeartifact/repository:Repository":0,"aws:codeartifact/repositoryPermissionsPolicy:RepositoryPermissionsPolicy":0,"aws:codebuild/project:Project":0,"aws:codebuild/reportGroup:ReportGroup":0,"aws:codebuild/resourcePolicy:ResourcePolicy":0,"aws:codebuild/sourceCredential:SourceCredential":0,"aws:codebuild/webhook:Webhook":0,"aws:codecatalyst/devEnvironment:DevEnvironment":0,"aws:codecatalyst/project:Project":0,"aws:codecatalyst/sourceRepository:SourceRepository":0,"aws:codecommit/approvalRuleTemplate:ApprovalRuleTemplate":0,"aws:codecommit/approvalRuleTemplateAssociation:ApprovalRuleTemplateAssociation":0,"aws:codecommit/repository:Repository":0,"aws:codecommit/trigger:Trigger":0,"aws:codedeploy/application:Application":0,"aws:codedeploy/deploymentConfig:DeploymentConfig":0,"aws:codedeploy/deploymentGroup:DeploymentGroup":0,"aws:codeguruprofiler/profilingGroup:ProfilingGroup":1,"aws:codegurureviewer/repositoryAssociation:RepositoryAssociation":0,"aws:codepipeline/customActionType:CustomActionType":0,"aws:codepipeline/pipeline:Pipeline":0,"aws:codepipeline/webhook:Webhook":0,"aws:codestarconnections/connection:Connection":0,"aws:codestarconnections/host:Host":0,"aws:codestarnotifications/notificationRule:NotificationRule":0,"aws:cognito/identityPool:IdentityPool":0,"aws:cognito/identityPoolProviderPrincipalTag:IdentityPoolProviderPrincipalTag":0,"aws:cognito/identityPoolRoleAttachment:IdentityPoolRoleAttachment":0,"aws:cognito/identityProvider:IdentityProvider":0,"aws:cognito/managedUserPoolClient:ManagedUserPoolClient":1,"aws:cognito/resourceServer:ResourceServer":0,"aws:cognito/riskConfiguration:RiskConfiguration":0,"aws:cognito/user:User":0,"aws:cognito/userGroup:UserGroup":0,"aws:cognito/userInGroup:UserInGroup":0,"aws:cognito/userPool:UserPool":0,"aws:cognito/userPoolClient:UserPoolClient":1,"aws:cognito/userPoolDomain:UserPoolDomain":0,"aws:cognito/userPoolUICustomization:UserPoolUICustomization":0,"aws:comprehend/documentClassifier:DocumentClassifier":0,"aws:comprehend/entityRecognizer:EntityRecognizer":0,"aws:connect/botAssociation:BotAssociation":0,"aws:connect/contactFlow:ContactFlow":0,"aws:connect/contactFlowModule:ContactFlowModule":0,"aws:connect/hoursOfOperation:HoursOfOperation":0,"aws:connect/instance:Instance":0,"aws:connect/instanceStorageConfig:InstanceStorageConfig":0,"aws:connect/lambdaFunctionAssociation:LambdaFunctionAssociation":0,"aws:connect/phoneNumber:PhoneNumber":0,"aws:connect/queue:Queue":0,"aws:connect/quickConnect:QuickConnect":0,"aws:connect/routingProfile:RoutingProfile":0,"aws:connect/securityProfile:SecurityProfile":0,"aws:connect/user:User":0,"aws:connect/userHierarchyGroup:UserHierarchyGroup":0,"aws:connect/userHierarchyStructure:UserHierarchyStructure":0,"aws:connect/vocabulary:Vocabulary":0,"aws:controltower/controlTowerControl:ControlTowerControl":0,"aws:controltower/landingZone:LandingZone":0,"aws:costexplorer/anomalyMonitor:AnomalyMonitor":0,"aws:costexplorer/anomalySubscription:AnomalySubscription":0,"aws:costexplorer/costAllocationTag:CostAllocationTag":0,"aws:costexplorer/costCategory:CostCategory":0,"aws:cur/reportDefinition:ReportDefinition":0,"aws:customerprofiles/domain:Domain":0,"aws:customerprofiles/profile:Profile":0,"aws:dataexchange/dataSet:DataSet":0,"aws:dataexchange/revision:Revision":0,"aws:datapipeline/pipeline:Pipeline":0,"aws:datapipeline/pipelineDefinition:PipelineDefinition":0,"aws:datasync/agent:Agent":0,"aws:datasync/efsLocation:EfsLocation":0,"aws:datasync/fsxOpenZfsFileSystem:FsxOpenZfsFileSystem":0,"aws:datasync/locationAzureBlob:LocationAzureBlob":0,"aws:datasync/locationFsxLustre:LocationFsxLustre":0,"aws:datasync/locationFsxOntapFileSystem:LocationFsxOntapFileSystem":0,"aws:datasync/locationFsxWindows:LocationFsxWindows":0,"aws:datasync/locationHdfs:LocationHdfs":0,"aws:datasync/locationObjectStorage:LocationObjectStorage":0,"aws:datasync/locationSmb:LocationSmb":0,"aws:datasync/nfsLocation:NfsLocation":0,"aws:datasync/s3Location:S3Location":0,"aws:datasync/task:Task":0,"aws:datazone/domain:Domain":1,"aws:datazone/environmentBlueprintConfiguration:EnvironmentBlueprintConfiguration":1,"aws:datazone/glossary:Glossary":1,"aws:datazone/project:Project":1,"aws:dax/cluster:Cluster":0,"aws:dax/parameterGroup:ParameterGroup":0,"aws:dax/subnetGroup:SubnetGroup":0,"aws:detective/graph:Graph":0,"aws:detective/invitationAccepter:InvitationAccepter":0,"aws:detective/member:Member":0,"aws:detective/organizationAdminAccount:OrganizationAdminAccount":0,"aws:detective/organizationConfiguration:OrganizationConfiguration":0,"aws:devicefarm/devicePool:DevicePool":0,"aws:devicefarm/instanceProfile:InstanceProfile":0,"aws:devicefarm/networkProfile:NetworkProfile":0,"aws:devicefarm/project:Project":0,"aws:devicefarm/testGridProject:TestGridProject":0,"aws:devicefarm/upload:Upload":0,"aws:devopsguru/eventSourcesConfig:EventSourcesConfig":1,"aws:devopsguru/notificationChannel:NotificationChannel":1,"aws:devopsguru/resourceCollection:ResourceCollection":1,"aws:devopsguru/serviceIntegration:ServiceIntegration":1,"aws:directconnect/bgpPeer:BgpPeer":0,"aws:directconnect/connection:Connection":0,"aws:directconnect/connectionAssociation:ConnectionAssociation":0,"aws:directconnect/connectionConfirmation:ConnectionConfirmation":0,"aws:directconnect/gateway:Gateway":0,"aws:directconnect/gatewayAssociation:GatewayAssociation":0,"aws:directconnect/gatewayAssociationProposal:GatewayAssociationProposal":0,"aws:directconnect/hostedConnection:HostedConnection":0,"aws:directconnect/hostedPrivateVirtualInterface:HostedPrivateVirtualInterface":0,"aws:directconnect/hostedPrivateVirtualInterfaceAccepter:HostedPrivateVirtualInterfaceAccepter":0,"aws:directconnect/hostedPublicVirtualInterface:HostedPublicVirtualInterface":0,"aws:directconnect/hostedPublicVirtualInterfaceAccepter:HostedPublicVirtualInterfaceAccepter":0,"aws:directconnect/hostedTransitVirtualInterface:HostedTransitVirtualInterface":0,"aws:directconnect/hostedTransitVirtualInterfaceAcceptor:HostedTransitVirtualInterfaceAcceptor":0,"aws:directconnect/linkAggregationGroup:LinkAggregationGroup":0,"aws:directconnect/macsecKeyAssociation:MacsecKeyAssociation":0,"aws:directconnect/privateVirtualInterface:PrivateVirtualInterface":0,"aws:directconnect/publicVirtualInterface:PublicVirtualInterface":0,"aws:directconnect/transitVirtualInterface:TransitVirtualInterface":0,"aws:directoryservice/conditionalForwader:ConditionalForwader":0,"aws:directoryservice/directory:Directory":0,"aws:directoryservice/logService:LogService":0,"aws:directoryservice/radiusSettings:RadiusSettings":0,"aws:directoryservice/serviceRegion:ServiceRegion":0,"aws:directoryservice/sharedDirectory:SharedDirectory":0,"aws:directoryservice/sharedDirectoryAccepter:SharedDirectoryAccepter":0,"aws:directoryservice/trust:Trust":1,"aws:dlm/lifecyclePolicy:LifecyclePolicy":0,"aws:dms/certificate:Certificate":0,"aws:dms/endpoint:Endpoint":0,"aws:dms/eventSubscription:EventSubscription":0,"aws:dms/replicationConfig:ReplicationConfig":0,"aws:dms/replicationInstance:ReplicationInstance":0,"aws:dms/replicationSubnetGroup:ReplicationSubnetGroup":0,"aws:dms/replicationTask:ReplicationTask":0,"aws:dms/s3Endpoint:S3Endpoint":0,"aws:docdb/cluster:Cluster":0,"aws:docdb/clusterInstance:ClusterInstance":0,"aws:docdb/clusterParameterGroup:ClusterParameterGroup":0,"aws:docdb/clusterSnapshot:ClusterSnapshot":0,"aws:docdb/elasticCluster:ElasticCluster":1,"aws:docdb/eventSubscription:EventSubscription":0,"aws:docdb/globalCluster:GlobalCluster":0,"aws:docdb/subnetGroup:SubnetGroup":0,"aws:drs/replicationConfigurationTemplate:ReplicationConfigurationTemplate":1,"aws:dynamodb/contributorInsights:ContributorInsights":0,"aws:dynamodb/globalTable:GlobalTable":0,"aws:dynamodb/kinesisStreamingDestination:KinesisStreamingDestination":0,"aws:dynamodb/resourcePolicy:ResourcePolicy":1,"aws:dynamodb/table:Table":0,"aws:dynamodb/tableExport:TableExport":0,"aws:dynamodb/tableItem:TableItem":0,"aws:dynamodb/tableReplica:TableReplica":0,"aws:dynamodb/tag:Tag":0,"aws:ebs/defaultKmsKey:DefaultKmsKey":0,"aws:ebs/encryptionByDefault:EncryptionByDefault":0,"aws:ebs/fastSnapshotRestore:FastSnapshotRestore":1,"aws:ebs/snapshot:Snapshot":0,"aws:ebs/snapshotCopy:SnapshotCopy":0,"aws:ebs/snapshotImport:SnapshotImport":0,"aws:ebs/volume:Volume":0,"aws:ec2/ami:Ami":0,"aws:ec2/amiCopy:AmiCopy":0,"aws:ec2/amiFromInstance:AmiFromInstance":0,"aws:ec2/amiLaunchPermission:AmiLaunchPermission":0,"aws:ec2/availabilityZoneGroup:AvailabilityZoneGroup":0,"aws:ec2/capacityBlockReservation:CapacityBlockReservation":1,"aws:ec2/capacityReservation:CapacityReservation":0,"aws:ec2/carrierGateway:CarrierGateway":0,"aws:ec2/customerGateway:CustomerGateway":0,"aws:ec2/dedicatedHost:DedicatedHost":0,"aws:ec2/defaultNetworkAcl:DefaultNetworkAcl":0,"aws:ec2/defaultRouteTable:DefaultRouteTable":0,"aws:ec2/defaultSecurityGroup:DefaultSecurityGroup":0,"aws:ec2/defaultSubnet:DefaultSubnet":0,"aws:ec2/defaultVpc:DefaultVpc":0,"aws:ec2/defaultVpcDhcpOptions:DefaultVpcDhcpOptions":0,"aws:ec2/egressOnlyInternetGateway:EgressOnlyInternetGateway":0,"aws:ec2/eip:Eip":0,"aws:ec2/eipAssociation:EipAssociation":0,"aws:ec2/eipDomainName:EipDomainName":1,"aws:ec2/fleet:Fleet":0,"aws:ec2/flowLog:FlowLog":0,"aws:ec2/imageBlockPublicAccess:ImageBlockPublicAccess":0,"aws:ec2/instance:Instance":0,"aws:ec2/instanceMetadataDefaults:InstanceMetadataDefaults":1,"aws:ec2/internetGateway:InternetGateway":0,"aws:ec2/internetGatewayAttachment:InternetGatewayAttachment":0,"aws:ec2/keyPair:KeyPair":0,"aws:ec2/launchConfiguration:LaunchConfiguration":0,"aws:ec2/launchTemplate:LaunchTemplate":0,"aws:ec2/localGatewayRoute:LocalGatewayRoute":0,"aws:ec2/localGatewayRouteTableVpcAssociation:LocalGatewayRouteTableVpcAssociation":0,"aws:ec2/mainRouteTableAssociation:MainRouteTableAssociation":0,"aws:ec2/managedPrefixList:ManagedPrefixList":0,"aws:ec2/managedPrefixListEntry:ManagedPrefixListEntry":0,"aws:ec2/natGateway:NatGateway":0,"aws:ec2/networkAcl:NetworkAcl":0,"aws:ec2/networkAclAssociation:NetworkAclAssociation":0,"aws:ec2/networkAclRule:NetworkAclRule":0,"aws:ec2/networkInsightsAnalysis:NetworkInsightsAnalysis":0,"aws:ec2/networkInsightsPath:NetworkInsightsPath":0,"aws:ec2/networkInterface:NetworkInterface":0,"aws:ec2/networkInterfaceAttachment:NetworkInterfaceAttachment":0,"aws:ec2/networkInterfaceSecurityGroupAttachment:NetworkInterfaceSecurityGroupAttachment":0,"aws:ec2/peeringConnectionOptions:PeeringConnectionOptions":0,"aws:ec2/placementGroup:PlacementGroup":0,"aws:ec2/proxyProtocolPolicy:ProxyProtocolPolicy":0,"aws:ec2/route:Route":0,"aws:ec2/routeTable:RouteTable":0,"aws:ec2/routeTableAssociation:RouteTableAssociation":0,"aws:ec2/securityGroup:SecurityGroup":0,"aws:ec2/securityGroupAssociation:SecurityGroupAssociation":0,"aws:ec2/securityGroupRule:SecurityGroupRule":0,"aws:ec2/serialConsoleAccess:SerialConsoleAccess":0,"aws:ec2/snapshotCreateVolumePermission:SnapshotCreateVolumePermission":0,"aws:ec2/spotDatafeedSubscription:SpotDatafeedSubscription":0,"aws:ec2/spotFleetRequest:SpotFleetRequest":0,"aws:ec2/spotInstanceRequest:SpotInstanceRequest":0,"aws:ec2/subnet:Subnet":0,"aws:ec2/subnetCidrReservation:SubnetCidrReservation":0,"aws:ec2/tag:Tag":0,"aws:ec2/trafficMirrorFilter:TrafficMirrorFilter":0,"aws:ec2/trafficMirrorFilterRule:TrafficMirrorFilterRule":0,"aws:ec2/trafficMirrorSession:TrafficMirrorSession":0,"aws:ec2/trafficMirrorTarget:TrafficMirrorTarget":0,"aws:ec2/volumeAttachment:VolumeAttachment":0,"aws:ec2/vpc:Vpc":0,"aws:ec2/vpcDhcpOptions:VpcDhcpOptions":0,"aws:ec2/vpcDhcpOptionsAssociation:VpcDhcpOptionsAssociation":0,"aws:ec2/vpcEndpoint:VpcEndpoint":0,"aws:ec2/vpcEndpointConnectionAccepter:VpcEndpointConnectionAccepter":0,"aws:ec2/vpcEndpointConnectionNotification:VpcEndpointConnectionNotification":0,"aws:ec2/vpcEndpointPolicy:VpcEndpointPolicy":0,"aws:ec2/vpcEndpointRouteTableAssociation:VpcEndpointRouteTableAssociation":0,"aws:ec2/vpcEndpointService:VpcEndpointService":0,"aws:ec2/vpcEndpointServiceAllowedPrinciple:VpcEndpointServiceAllowedPrinciple":0,"aws:ec2/vpcEndpointSubnetAssociation:VpcEndpointSubnetAssociation":0,"aws:ec2/vpcIpam:VpcIpam":0,"aws:ec2/vpcIpamOrganizationAdminAccount:VpcIpamOrganizationAdminAccount":0,"aws:ec2/vpcIpamPool:VpcIpamPool":0,"aws:ec2/vpcIpamPoolCidr:VpcIpamPoolCidr":0,"aws:ec2/vpcIpamPoolCidrAllocation:VpcIpamPoolCidrAllocation":0,"aws:ec2/vpcIpamPreviewNextCidr:VpcIpamPreviewNextCidr":0,"aws:ec2/vpcIpamResourceDiscovery:VpcIpamResourceDiscovery":0,"aws:ec2/vpcIpamResourceDiscoveryAssociation:VpcIpamResourceDiscoveryAssociation":0,"aws:ec2/vpcIpamScope:VpcIpamScope":0,"aws:ec2/vpcIpv4CidrBlockAssociation:VpcIpv4CidrBlockAssociation":0,"aws:ec2/vpcIpv6CidrBlockAssociation:VpcIpv6CidrBlockAssociation":0,"aws:ec2/vpcNetworkPerformanceMetricSubscription:VpcNetworkPerformanceMetricSubscription":0,"aws:ec2/vpcPeeringConnection:VpcPeeringConnection":0,"aws:ec2/vpcPeeringConnectionAccepter:VpcPeeringConnectionAccepter":0,"aws:ec2/vpnConnection:VpnConnection":0,"aws:ec2/vpnConnectionRoute:VpnConnectionRoute":0,"aws:ec2/vpnGateway:VpnGateway":0,"aws:ec2/vpnGatewayAttachment:VpnGatewayAttachment":0,"aws:ec2/vpnGatewayRoutePropagation:VpnGatewayRoutePropagation":0,"aws:ec2clientvpn/authorizationRule:AuthorizationRule":0,"aws:ec2clientvpn/endpoint:Endpoint":0,"aws:ec2clientvpn/networkAssociation:NetworkAssociation":0,"aws:ec2clientvpn/route:Route":0,"aws:ec2transitgateway/connect:Connect":0,"aws:ec2transitgateway/connectPeer:ConnectPeer":0,"aws:ec2transitgateway/instanceConnectEndpoint:InstanceConnectEndpoint":1,"aws:ec2transitgateway/instanceState:InstanceState":0,"aws:ec2transitgateway/multicastDomain:MulticastDomain":0,"aws:ec2transitgateway/multicastDomainAssociation:MulticastDomainAssociation":0,"aws:ec2transitgateway/multicastGroupMember:MulticastGroupMember":0,"aws:ec2transitgateway/multicastGroupSource:MulticastGroupSource":0,"aws:ec2transitgateway/peeringAttachment:PeeringAttachment":0,"aws:ec2transitgateway/peeringAttachmentAccepter:PeeringAttachmentAccepter":0,"aws:ec2transitgateway/policyTable:PolicyTable":0,"aws:ec2transitgateway/policyTableAssociation:PolicyTableAssociation":0,"aws:ec2transitgateway/prefixListReference:PrefixListReference":0,"aws:ec2transitgateway/route:Route":0,"aws:ec2transitgateway/routeTable:RouteTable":0,"aws:ec2transitgateway/routeTableAssociation:RouteTableAssociation":0,"aws:ec2transitgateway/routeTablePropagation:RouteTablePropagation":0,"aws:ec2transitgateway/transitGateway:TransitGateway":0,"aws:ec2transitgateway/vpcAttachment:VpcAttachment":0,"aws:ec2transitgateway/vpcAttachmentAccepter:VpcAttachmentAccepter":0,"aws:ecr/lifecyclePolicy:LifecyclePolicy":0,"aws:ecr/pullThroughCacheRule:PullThroughCacheRule":0,"aws:ecr/registryPolicy:RegistryPolicy":0,"aws:ecr/registryScanningConfiguration:RegistryScanningConfiguration":0,"aws:ecr/replicationConfiguration:ReplicationConfiguration":0,"aws:ecr/repository:Repository":0,"aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate":0,"aws:ecr/repositoryPolicy:RepositoryPolicy":0,"aws:ecrpublic/repository:Repository":0,"aws:ecrpublic/repositoryPolicy:RepositoryPolicy":0,"aws:ecs/accountSettingDefault:AccountSettingDefault":0,"aws:ecs/capacityProvider:CapacityProvider":0,"aws:ecs/cluster:Cluster":0,"aws:ecs/clusterCapacityProviders:ClusterCapacityProviders":0,"aws:ecs/service:Service":0,"aws:ecs/tag:Tag":0,"aws:ecs/taskDefinition:TaskDefinition":0,"aws:ecs/taskSet:TaskSet":0,"aws:efs/accessPoint:AccessPoint":0,"aws:efs/backupPolicy:BackupPolicy":0,"aws:efs/fileSystem:FileSystem":0,"aws:efs/fileSystemPolicy:FileSystemPolicy":0,"aws:efs/mountTarget:MountTarget":0,"aws:efs/replicationConfiguration:ReplicationConfiguration":0,"aws:eks/accessEntry:AccessEntry":0,"aws:eks/accessPolicyAssociation:AccessPolicyAssociation":0,"aws:eks/addon:Addon":0,"aws:eks/cluster:Cluster":0,"aws:eks/fargateProfile:FargateProfile":0,"aws:eks/identityProviderConfig:IdentityProviderConfig":0,"aws:eks/nodeGroup:NodeGroup":0,"aws:eks/podIdentityAssociation:PodIdentityAssociation":1,"aws:elasticache/cluster:Cluster":0,"aws:elasticache/globalReplicationGroup:GlobalReplicationGroup":0,"aws:elasticache/parameterGroup:ParameterGroup":0,"aws:elasticache/replicationGroup:ReplicationGroup":0,"aws:elasticache/serverlessCache:ServerlessCache":1,"aws:elasticache/subnetGroup:SubnetGroup":0,"aws:elasticache/user:User":0,"aws:elasticache/userGroup:UserGroup":0,"aws:elasticache/userGroupAssociation:UserGroupAssociation":0,"aws:elasticbeanstalk/application:Application":0,"aws:elasticbeanstalk/applicationVersion:ApplicationVersion":0,"aws:elasticbeanstalk/configurationTemplate:ConfigurationTemplate":0,"aws:elasticbeanstalk/environment:Environment":0,"aws:elasticsearch/domain:Domain":0,"aws:elasticsearch/domainPolicy:DomainPolicy":0,"aws:elasticsearch/domainSamlOptions:DomainSamlOptions":0,"aws:elasticsearch/vpcEndpoint:VpcEndpoint":0,"aws:elastictranscoder/pipeline:Pipeline":0,"aws:elastictranscoder/preset:Preset":0,"aws:elb/appCookieStickinessPolicy:AppCookieStickinessPolicy":0,"aws:elb/attachment:Attachment":0,"aws:elb/listenerPolicy:ListenerPolicy":0,"aws:elb/loadBalancer:LoadBalancer":0,"aws:elb/loadBalancerBackendServerPolicy:LoadBalancerBackendServerPolicy":0,"aws:elb/loadBalancerCookieStickinessPolicy:LoadBalancerCookieStickinessPolicy":0,"aws:elb/loadBalancerPolicy:LoadBalancerPolicy":0,"aws:elb/sslNegotiationPolicy:SslNegotiationPolicy":0,"aws:emr/blockPublicAccessConfiguration:BlockPublicAccessConfiguration":0,"aws:emr/cluster:Cluster":0,"aws:emr/instanceFleet:InstanceFleet":0,"aws:emr/instanceGroup:InstanceGroup":0,"aws:emr/managedScalingPolicy:ManagedScalingPolicy":0,"aws:emr/securityConfiguration:SecurityConfiguration":0,"aws:emr/studio:Studio":0,"aws:emr/studioSessionMapping:StudioSessionMapping":0,"aws:emrcontainers/jobTemplate:JobTemplate":0,"aws:emrcontainers/virtualCluster:VirtualCluster":0,"aws:emrserverless/application:Application":0,"aws:evidently/feature:Feature":0,"aws:evidently/launch:Launch":0,"aws:evidently/project:Project":0,"aws:evidently/segment:Segment":0,"aws:finspace/kxCluster:KxCluster":0,"aws:finspace/kxDatabase:KxDatabase":0,"aws:finspace/kxDataview:KxDataview":0,"aws:finspace/kxEnvironment:KxEnvironment":0,"aws:finspace/kxScalingGroup:KxScalingGroup":0,"aws:finspace/kxUser:KxUser":0,"aws:finspace/kxVolume:KxVolume":0,"aws:fis/experimentTemplate:ExperimentTemplate":0,"aws:fms/adminAccount:AdminAccount":0,"aws:fms/policy:Policy":0,"aws:fms/resourceSet:ResourceSet":1,"aws:fsx/backup:Backup":0,"aws:fsx/dataRepositoryAssociation:DataRepositoryAssociation":0,"aws:fsx/fileCache:FileCache":0,"aws:fsx/lustreFileSystem:LustreFileSystem":0,"aws:fsx/ontapFileSystem:OntapFileSystem":0,"aws:fsx/ontapStorageVirtualMachine:OntapStorageVirtualMachine":0,"aws:fsx/ontapVolume:OntapVolume":0,"aws:fsx/openZfsFileSystem:OpenZfsFileSystem":0,"aws:fsx/openZfsSnapshot:OpenZfsSnapshot":0,"aws:fsx/openZfsVolume:OpenZfsVolume":0,"aws:fsx/windowsFileSystem:WindowsFileSystem":0,"aws:gamelift/alias:Alias":0,"aws:gamelift/build:Build":0,"aws:gamelift/fleet:Fleet":0,"aws:gamelift/gameServerGroup:GameServerGroup":0,"aws:gamelift/gameSessionQueue:GameSessionQueue":0,"aws:gamelift/matchmakingConfiguration:MatchmakingConfiguration":0,"aws:gamelift/matchmakingRuleSet:MatchmakingRuleSet":0,"aws:gamelift/script:Script":0,"aws:glacier/vault:Vault":0,"aws:glacier/vaultLock:VaultLock":0,"aws:globalaccelerator/accelerator:Accelerator":0,"aws:globalaccelerator/crossAccountAttachment:CrossAccountAttachment":1,"aws:globalaccelerator/customRoutingAccelerator:CustomRoutingAccelerator":0,"aws:globalaccelerator/customRoutingEndpointGroup:CustomRoutingEndpointGroup":0,"aws:globalaccelerator/customRoutingListener:CustomRoutingListener":0,"aws:globalaccelerator/endpointGroup:EndpointGroup":0,"aws:globalaccelerator/listener:Listener":0,"aws:glue/catalogDatabase:CatalogDatabase":0,"aws:glue/catalogTable:CatalogTable":0,"aws:glue/classifier:Classifier":0,"aws:glue/connection:Connection":0,"aws:glue/crawler:Crawler":0,"aws:glue/dataCatalogEncryptionSettings:DataCatalogEncryptionSettings":0,"aws:glue/dataQualityRuleset:DataQualityRuleset":0,"aws:glue/devEndpoint:DevEndpoint":0,"aws:glue/job:Job":0,"aws:glue/mLTransform:MLTransform":0,"aws:glue/partition:Partition":0,"aws:glue/partitionIndex:PartitionIndex":0,"aws:glue/registry:Registry":0,"aws:glue/resourcePolicy:ResourcePolicy":0,"aws:glue/schema:Schema":0,"aws:glue/securityConfiguration:SecurityConfiguration":0,"aws:glue/trigger:Trigger":0,"aws:glue/userDefinedFunction:UserDefinedFunction":0,"aws:glue/workflow:Workflow":0,"aws:grafana/licenseAssociation:LicenseAssociation":0,"aws:grafana/roleAssociation:RoleAssociation":0,"aws:grafana/workspace:Workspace":0,"aws:grafana/workspaceApiKey:WorkspaceApiKey":0,"aws:grafana/workspaceSamlConfiguration:WorkspaceSamlConfiguration":0,"aws:grafana/workspaceServiceAccount:WorkspaceServiceAccount":1,"aws:grafana/workspaceServiceAccountToken:WorkspaceServiceAccountToken":1,"aws:guardduty/detector:Detector":0,"aws:guardduty/detectorFeature:DetectorFeature":0,"aws:guardduty/filter:Filter":0,"aws:guardduty/iPSet:IPSet":0,"aws:guardduty/inviteAccepter:InviteAccepter":0,"aws:guardduty/malwareProtectionPlan:MalwareProtectionPlan":1,"aws:guardduty/member:Member":0,"aws:guardduty/organizationAdminAccount:OrganizationAdminAccount":0,"aws:guardduty/organizationConfiguration:OrganizationConfiguration":0,"aws:guardduty/organizationConfigurationFeature:OrganizationConfigurationFeature":0,"aws:guardduty/publishingDestination:PublishingDestination":0,"aws:guardduty/threatIntelSet:ThreatIntelSet":0,"aws:iam/accessKey:AccessKey":0,"aws:iam/accountAlias:AccountAlias":0,"aws:iam/accountPasswordPolicy:AccountPasswordPolicy":0,"aws:iam/group:Group":0,"aws:iam/groupMembership:GroupMembership":0,"aws:iam/groupPolicy:GroupPolicy":0,"aws:iam/groupPolicyAttachment:GroupPolicyAttachment":0,"aws:iam/instanceProfile:InstanceProfile":0,"aws:iam/openIdConnectProvider:OpenIdConnectProvider":0,"aws:iam/policy:Policy":0,"aws:iam/policyAttachment:PolicyAttachment":0,"aws:iam/role:Role":0,"aws:iam/rolePolicy:RolePolicy":0,"aws:iam/rolePolicyAttachment:RolePolicyAttachment":0,"aws:iam/samlProvider:SamlProvider":0,"aws:iam/securityTokenServicePreferences:SecurityTokenServicePreferences":0,"aws:iam/serverCertificate:ServerCertificate":0,"aws:iam/serviceLinkedRole:ServiceLinkedRole":0,"aws:iam/serviceSpecificCredential:ServiceSpecificCredential":0,"aws:iam/signingCertificate:SigningCertificate":0,"aws:iam/sshKey:SshKey":0,"aws:iam/user:User":0,"aws:iam/userGroupMembership:UserGroupMembership":0,"aws:iam/userLoginProfile:UserLoginProfile":0,"aws:iam/userPolicy:UserPolicy":0,"aws:iam/userPolicyAttachment:UserPolicyAttachment":0,"aws:iam/virtualMfaDevice:VirtualMfaDevice":0,"aws:identitystore/group:Group":0,"aws:identitystore/groupMembership:GroupMembership":0,"aws:identitystore/user:User":0,"aws:imagebuilder/component:Component":0,"aws:imagebuilder/containerRecipe:ContainerRecipe":0,"aws:imagebuilder/distributionConfiguration:DistributionConfiguration":0,"aws:imagebuilder/image:Image":0,"aws:imagebuilder/imagePipeline:ImagePipeline":0,"aws:imagebuilder/imageRecipe:ImageRecipe":0,"aws:imagebuilder/infrastructureConfiguration:InfrastructureConfiguration":0,"aws:imagebuilder/workflow:Workflow":0,"aws:inspector/assessmentTarget:AssessmentTarget":0,"aws:inspector/assessmentTemplate:AssessmentTemplate":0,"aws:inspector/resourceGroup:ResourceGroup":0,"aws:inspector2/delegatedAdminAccount:DelegatedAdminAccount":0,"aws:inspector2/enabler:Enabler":0,"aws:inspector2/memberAssociation:MemberAssociation":0,"aws:inspector2/organizationConfiguration:OrganizationConfiguration":0,"aws:iot/authorizer:Authorizer":0,"aws:iot/billingGroup:BillingGroup":0,"aws:iot/caCertificate:CaCertificate":0,"aws:iot/certificate:Certificate":0,"aws:iot/domainConfiguration:DomainConfiguration":0,"aws:iot/eventConfigurations:EventConfigurations":0,"aws:iot/indexingConfiguration:IndexingConfiguration":0,"aws:iot/loggingOptions:LoggingOptions":0,"aws:iot/policy:Policy":0,"aws:iot/policyAttachment:PolicyAttachment":0,"aws:iot/provisioningTemplate:ProvisioningTemplate":0,"aws:iot/roleAlias:RoleAlias":0,"aws:iot/thing:Thing":0,"aws:iot/thingGroup:ThingGroup":0,"aws:iot/thingGroupMembership:ThingGroupMembership":0,"aws:iot/thingPrincipalAttachment:ThingPrincipalAttachment":0,"aws:iot/thingType:ThingType":0,"aws:iot/topicRule:TopicRule":0,"aws:iot/topicRuleDestination:TopicRuleDestination":0,"aws:ivs/channel:Channel":0,"aws:ivs/playbackKeyPair:PlaybackKeyPair":0,"aws:ivs/recordingConfiguration:RecordingConfiguration":0,"aws:ivschat/loggingConfiguration:LoggingConfiguration":0,"aws:ivschat/room:Room":0,"aws:kendra/dataSource:DataSource":0,"aws:kendra/experience:Experience":0,"aws:kendra/faq:Faq":0,"aws:kendra/index:Index":0,"aws:kendra/querySuggestionsBlockList:QuerySuggestionsBlockList":0,"aws:kendra/thesaurus:Thesaurus":0,"aws:keyspaces/keyspace:Keyspace":0,"aws:keyspaces/table:Table":0,"aws:kinesis/analyticsApplication:AnalyticsApplication":0,"aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream":0,"aws:kinesis/resourcePolicy:ResourcePolicy":1,"aws:kinesis/stream:Stream":0,"aws:kinesis/streamConsumer:StreamConsumer":0,"aws:kinesis/videoStream:VideoStream":0,"aws:kinesisanalyticsv2/application:Application":0,"aws:kinesisanalyticsv2/applicationSnapshot:ApplicationSnapshot":0,"aws:kms/alias:Alias":0,"aws:kms/ciphertext:Ciphertext":0,"aws:kms/customKeyStore:CustomKeyStore":0,"aws:kms/externalKey:ExternalKey":0,"aws:kms/grant:Grant":0,"aws:kms/key:Key":0,"aws:kms/keyPolicy:KeyPolicy":0,"aws:kms/replicaExternalKey:ReplicaExternalKey":0,"aws:kms/replicaKey:ReplicaKey":0,"aws:lakeformation/dataCellsFilter:DataCellsFilter":1,"aws:lakeformation/dataLakeSettings:DataLakeSettings":0,"aws:lakeformation/lfTag:LfTag":0,"aws:lakeformation/permissions:Permissions":0,"aws:lakeformation/resource:Resource":0,"aws:lakeformation/resourceLfTag:ResourceLfTag":1,"aws:lakeformation/resourceLfTags:ResourceLfTags":0,"aws:lambda/alias:Alias":0,"aws:lambda/codeSigningConfig:CodeSigningConfig":0,"aws:lambda/eventSourceMapping:EventSourceMapping":0,"aws:lambda/function:Function":0,"aws:lambda/functionEventInvokeConfig:FunctionEventInvokeConfig":0,"aws:lambda/functionUrl:FunctionUrl":0,"aws:lambda/invocation:Invocation":0,"aws:lambda/layerVersion:LayerVersion":0,"aws:lambda/layerVersionPermission:LayerVersionPermission":0,"aws:lambda/permission:Permission":0,"aws:lambda/provisionedConcurrencyConfig:ProvisionedConcurrencyConfig":0,"aws:lambda/runtimeManagementConfig:RuntimeManagementConfig":1,"aws:lb/listener:Listener":0,"aws:lb/listenerCertificate:ListenerCertificate":0,"aws:lb/listenerRule:ListenerRule":0,"aws:lb/loadBalancer:LoadBalancer":0,"aws:lb/targetGroup:TargetGroup":0,"aws:lb/targetGroupAttachment:TargetGroupAttachment":0,"aws:lb/trustStore:TrustStore":0,"aws:lb/trustStoreRevocation:TrustStoreRevocation":0,"aws:lex/bot:Bot":0,"aws:lex/botAlias:BotAlias":0,"aws:lex/intent:Intent":0,"aws:lex/slotType:SlotType":0,"aws:lex/v2modelsBot:V2modelsBot":1,"aws:lex/v2modelsBotLocale:V2modelsBotLocale":1,"aws:lex/v2modelsBotVersion:V2modelsBotVersion":1,"aws:lex/v2modelsIntent:V2modelsIntent":1,"aws:lex/v2modelsSlot:V2modelsSlot":1,"aws:lex/v2modelsSlotType:V2modelsSlotType":1,"aws:licensemanager/association:Association":0,"aws:licensemanager/licenseConfiguration:LicenseConfiguration":0,"aws:licensemanager/licenseGrant:LicenseGrant":0,"aws:licensemanager/licenseGrantAccepter:LicenseGrantAccepter":0,"aws:lightsail/bucket:Bucket":0,"aws:lightsail/bucketAccessKey:BucketAccessKey":0,"aws:lightsail/bucketResourceAccess:BucketResourceAccess":0,"aws:lightsail/certificate:Certificate":0,"aws:lightsail/containerService:ContainerService":0,"aws:lightsail/containerServiceDeploymentVersion:ContainerServiceDeploymentVersion":0,"aws:lightsail/database:Database":0,"aws:lightsail/disk:Disk":0,"aws:lightsail/disk_attachment:Disk_attachment":0,"aws:lightsail/distribution:Distribution":0,"aws:lightsail/domain:Domain":0,"aws:lightsail/domainEntry:DomainEntry":0,"aws:lightsail/instance:Instance":0,"aws:lightsail/instancePublicPorts:InstancePublicPorts":0,"aws:lightsail/keyPair:KeyPair":0,"aws:lightsail/lb:Lb":0,"aws:lightsail/lbAttachment:LbAttachment":0,"aws:lightsail/lbCertificate:LbCertificate":0,"aws:lightsail/lbCertificateAttachment:LbCertificateAttachment":0,"aws:lightsail/lbHttpsRedirectionPolicy:LbHttpsRedirectionPolicy":0,"aws:lightsail/lbStickinessPolicy:LbStickinessPolicy":0,"aws:lightsail/staticIp:StaticIp":0,"aws:lightsail/staticIpAttachment:StaticIpAttachment":0,"aws:location/geofenceCollection:GeofenceCollection":0,"aws:location/map:Map":0,"aws:location/placeIndex:PlaceIndex":0,"aws:location/routeCalculation:RouteCalculation":0,"aws:location/tracker:Tracker":0,"aws:location/trackerAssociation:TrackerAssociation":0,"aws:m2/application:Application":1,"aws:m2/deployment:Deployment":1,"aws:m2/environment:Environment":1,"aws:macie/customDataIdentifier:CustomDataIdentifier":0,"aws:macie/findingsFilter:FindingsFilter":0,"aws:macie2/account:Account":0,"aws:macie2/classificationExportConfiguration:ClassificationExportConfiguration":0,"aws:macie2/classificationJob:ClassificationJob":0,"aws:macie2/invitationAccepter:InvitationAccepter":0,"aws:macie2/member:Member":0,"aws:macie2/organizationAdminAccount:OrganizationAdminAccount":0,"aws:mediaconvert/queue:Queue":0,"aws:medialive/channel:Channel":0,"aws:medialive/input:Input":0,"aws:medialive/inputSecurityGroup:InputSecurityGroup":0,"aws:medialive/multiplex:Multiplex":0,"aws:medialive/multiplexProgram:MultiplexProgram":1,"aws:mediapackage/channel:Channel":0,"aws:mediastore/container:Container":0,"aws:mediastore/containerPolicy:ContainerPolicy":0,"aws:memorydb/acl:Acl":0,"aws:memorydb/cluster:Cluster":0,"aws:memorydb/parameterGroup:ParameterGroup":0,"aws:memorydb/snapshot:Snapshot":0,"aws:memorydb/subnetGroup:SubnetGroup":0,"aws:memorydb/user:User":0,"aws:mq/broker:Broker":0,"aws:mq/configuration:Configuration":0,"aws:msk/cluster:Cluster":0,"aws:msk/clusterPolicy:ClusterPolicy":0,"aws:msk/configuration:Configuration":0,"aws:msk/replicator:Replicator":0,"aws:msk/scramSecretAssociation:ScramSecretAssociation":0,"aws:msk/serverlessCluster:ServerlessCluster":0,"aws:msk/vpcConnection:VpcConnection":0,"aws:mskconnect/connector:Connector":0,"aws:mskconnect/customPlugin:CustomPlugin":0,"aws:mskconnect/workerConfiguration:WorkerConfiguration":0,"aws:mwaa/environment:Environment":0,"aws:neptune/cluster:Cluster":0,"aws:neptune/clusterEndpoint:ClusterEndpoint":0,"aws:neptune/clusterInstance:ClusterInstance":0,"aws:neptune/clusterParameterGroup:ClusterParameterGroup":0,"aws:neptune/clusterSnapshot:ClusterSnapshot":0,"aws:neptune/eventSubscription:EventSubscription":0,"aws:neptune/globalCluster:GlobalCluster":0,"aws:neptune/parameterGroup:ParameterGroup":0,"aws:neptune/subnetGroup:SubnetGroup":0,"aws:networkfirewall/firewall:Firewall":0,"aws:networkfirewall/firewallPolicy:FirewallPolicy":0,"aws:networkfirewall/loggingConfiguration:LoggingConfiguration":0,"aws:networkfirewall/resourcePolicy:ResourcePolicy":0,"aws:networkfirewall/ruleGroup:RuleGroup":0,"aws:networkfirewall/tlsInspectionConfiguration:TlsInspectionConfiguration":1,"aws:networkmanager/attachmentAccepter:AttachmentAccepter":0,"aws:networkmanager/connectAttachment:ConnectAttachment":0,"aws:networkmanager/connectPeer:ConnectPeer":0,"aws:networkmanager/connection:Connection":0,"aws:networkmanager/coreNetwork:CoreNetwork":0,"aws:networkmanager/coreNetworkPolicyAttachment:CoreNetworkPolicyAttachment":0,"aws:networkmanager/customerGatewayAssociation:CustomerGatewayAssociation":0,"aws:networkmanager/device:Device":0,"aws:networkmanager/globalNetwork:GlobalNetwork":0,"aws:networkmanager/link:Link":0,"aws:networkmanager/linkAssociation:LinkAssociation":0,"aws:networkmanager/site:Site":0,"aws:networkmanager/siteToSiteVpnAttachment:SiteToSiteVpnAttachment":0,"aws:networkmanager/transitGatewayConnectPeerAssociation:TransitGatewayConnectPeerAssociation":0,"aws:networkmanager/transitGatewayPeering:TransitGatewayPeering":0,"aws:networkmanager/transitGatewayRegistration:TransitGatewayRegistration":0,"aws:networkmanager/transitGatewayRouteTableAttachment:TransitGatewayRouteTableAttachment":0,"aws:networkmanager/vpcAttachment:VpcAttachment":0,"aws:networkmonitor/monitor:Monitor":1,"aws:networkmonitor/probe:Probe":1,"aws:oam/link:Link":0,"aws:oam/sink:Sink":0,"aws:oam/sinkPolicy:SinkPolicy":0,"aws:opensearch/domain:Domain":0,"aws:opensearch/domainPolicy:DomainPolicy":0,"aws:opensearch/domainSamlOptions:DomainSamlOptions":0,"aws:opensearch/inboundConnectionAccepter:InboundConnectionAccepter":0,"aws:opensearch/outboundConnection:OutboundConnection":0,"aws:opensearch/package:Package":0,"aws:opensearch/packageAssociation:PackageAssociation":0,"aws:opensearch/serverlessAccessPolicy:ServerlessAccessPolicy":1,"aws:opensearch/serverlessCollection:ServerlessCollection":1,"aws:opensearch/serverlessLifecyclePolicy:ServerlessLifecyclePolicy":1,"aws:opensearch/serverlessSecurityConfig:ServerlessSecurityConfig":1,"aws:opensearch/serverlessSecurityPolicy:ServerlessSecurityPolicy":1,"aws:opensearch/serverlessVpcEndpoint:ServerlessVpcEndpoint":1,"aws:opensearch/vpcEndpoint:VpcEndpoint":0,"aws:opensearchingest/pipeline:Pipeline":1,"aws:opsworks/application:Application":0,"aws:opsworks/customLayer:CustomLayer":0,"aws:opsworks/ecsClusterLayer:EcsClusterLayer":0,"aws:opsworks/gangliaLayer:GangliaLayer":0,"aws:opsworks/haproxyLayer:HaproxyLayer":0,"aws:opsworks/instance:Instance":0,"aws:opsworks/javaAppLayer:JavaAppLayer":0,"aws:opsworks/memcachedLayer:MemcachedLayer":0,"aws:opsworks/mysqlLayer:MysqlLayer":0,"aws:opsworks/nodejsAppLayer:NodejsAppLayer":0,"aws:opsworks/permission:Permission":0,"aws:opsworks/phpAppLayer:PhpAppLayer":0,"aws:opsworks/railsAppLayer:RailsAppLayer":0,"aws:opsworks/rdsDbInstance:RdsDbInstance":0,"aws:opsworks/stack:Stack":0,"aws:opsworks/staticWebLayer:StaticWebLayer":0,"aws:opsworks/userProfile:UserProfile":0,"aws:organizations/account:Account":0,"aws:organizations/delegatedAdministrator:DelegatedAdministrator":0,"aws:organizations/organization:Organization":0,"aws:organizations/organizationalUnit:OrganizationalUnit":0,"aws:organizations/policy:Policy":0,"aws:organizations/policyAttachment:PolicyAttachment":0,"aws:organizations/resourcePolicy:ResourcePolicy":0,"aws:paymentcryptography/key:Key":1,"aws:paymentcryptography/keyAlias:KeyAlias":1,"aws:pinpoint/admChannel:AdmChannel":0,"aws:pinpoint/apnsChannel:ApnsChannel":0,"aws:pinpoint/apnsSandboxChannel:ApnsSandboxChannel":0,"aws:pinpoint/apnsVoipChannel:ApnsVoipChannel":0,"aws:pinpoint/apnsVoipSandboxChannel:ApnsVoipSandboxChannel":0,"aws:pinpoint/app:App":0,"aws:pinpoint/baiduChannel:BaiduChannel":0,"aws:pinpoint/emailChannel:EmailChannel":0,"aws:pinpoint/eventStream:EventStream":0,"aws:pinpoint/gcmChannel:GcmChannel":0,"aws:pinpoint/smsChannel:SmsChannel":0,"aws:pipes/pipe:Pipe":0,"aws:qldb/ledger:Ledger":0,"aws:qldb/stream:Stream":0,"aws:quicksight/accountSubscription:AccountSubscription":0,"aws:quicksight/analysis:Analysis":0,"aws:quicksight/dashboard:Dashboard":0,"aws:quicksight/dataSet:DataSet":0,"aws:quicksight/dataSource:DataSource":0,"aws:quicksight/folder:Folder":0,"aws:quicksight/folderMembership:FolderMembership":1,"aws:quicksight/group:Group":0,"aws:quicksight/groupMembership:GroupMembership":0,"aws:quicksight/iamPolicyAssignment:IamPolicyAssignment":1,"aws:quicksight/ingestion:Ingestion":1,"aws:quicksight/namespace:Namespace":1,"aws:quicksight/refreshSchedule:RefreshSchedule":1,"aws:quicksight/template:Template":0,"aws:quicksight/templateAlias:TemplateAlias":1,"aws:quicksight/theme:Theme":0,"aws:quicksight/user:User":0,"aws:quicksight/vpcConnection:VpcConnection":1,"aws:ram/principalAssociation:PrincipalAssociation":0,"aws:ram/resourceAssociation:ResourceAssociation":0,"aws:ram/resourceShare:ResourceShare":0,"aws:ram/resourceShareAccepter:ResourceShareAccepter":0,"aws:ram/sharingWithOrganization:SharingWithOrganization":0,"aws:rbin/rule:Rule":0,"aws:rds/certificate:Certificate":0,"aws:rds/cluster:Cluster":0,"aws:rds/clusterActivityStream:ClusterActivityStream":0,"aws:rds/clusterEndpoint:ClusterEndpoint":0,"aws:rds/clusterInstance:ClusterInstance":0,"aws:rds/clusterParameterGroup:ClusterParameterGroup":0,"aws:rds/clusterRoleAssociation:ClusterRoleAssociation":0,"aws:rds/clusterSnapshot:ClusterSnapshot":0,"aws:rds/customDbEngineVersion:CustomDbEngineVersion":0,"aws:rds/eventSubscription:EventSubscription":0,"aws:rds/exportTask:ExportTask":1,"aws:rds/globalCluster:GlobalCluster":0,"aws:rds/instance:Instance":0,"aws:rds/instanceAutomatedBackupsReplication:InstanceAutomatedBackupsReplication":0,"aws:rds/optionGroup:OptionGroup":0,"aws:rds/parameterGroup:ParameterGroup":0,"aws:rds/proxy:Proxy":0,"aws:rds/proxyDefaultTargetGroup:ProxyDefaultTargetGroup":0,"aws:rds/proxyEndpoint:ProxyEndpoint":0,"aws:rds/proxyTarget:ProxyTarget":0,"aws:rds/reservedInstance:ReservedInstance":0,"aws:rds/roleAssociation:RoleAssociation":0,"aws:rds/snapshot:Snapshot":0,"aws:rds/snapshotCopy:SnapshotCopy":0,"aws:rds/subnetGroup:SubnetGroup":0,"aws:redshift/authenticationProfile:AuthenticationProfile":0,"aws:redshift/cluster:Cluster":0,"aws:redshift/clusterIamRoles:ClusterIamRoles":0,"aws:redshift/clusterSnapshot:ClusterSnapshot":0,"aws:redshift/dataShareAuthorization:DataShareAuthorization":1,"aws:redshift/dataShareConsumerAssociation:DataShareConsumerAssociation":1,"aws:redshift/endpointAccess:EndpointAccess":0,"aws:redshift/endpointAuthorization:EndpointAuthorization":0,"aws:redshift/eventSubscription:EventSubscription":0,"aws:redshift/hsmClientCertificate:HsmClientCertificate":0,"aws:redshift/hsmConfiguration:HsmConfiguration":0,"aws:redshift/logging:Logging":1,"aws:redshift/parameterGroup:ParameterGroup":0,"aws:redshift/partner:Partner":0,"aws:redshift/resourcePolicy:ResourcePolicy":0,"aws:redshift/scheduledAction:ScheduledAction":0,"aws:redshift/snapshotCopy:SnapshotCopy":1,"aws:redshift/snapshotCopyGrant:SnapshotCopyGrant":0,"aws:redshift/snapshotSchedule:SnapshotSchedule":0,"aws:redshift/snapshotScheduleAssociation:SnapshotScheduleAssociation":0,"aws:redshift/subnetGroup:SubnetGroup":0,"aws:redshift/usageLimit:UsageLimit":0,"aws:redshiftdata/statement:Statement":0,"aws:redshiftserverless/customDomainAssociation:CustomDomainAssociation":1,"aws:redshiftserverless/endpointAccess:EndpointAccess":0,"aws:redshiftserverless/namespace:Namespace":0,"aws:redshiftserverless/resourcePolicy:ResourcePolicy":0,"aws:redshiftserverless/snapshot:Snapshot":0,"aws:redshiftserverless/usageLimit:UsageLimit":0,"aws:redshiftserverless/workgroup:Workgroup":0,"aws:rekognition/collection:Collection":1,"aws:rekognition/project:Project":1,"aws:rekognition/streamProcessor:StreamProcessor":1,"aws:resourceexplorer/index:Index":1,"aws:resourceexplorer/view:View":1,"aws:resourcegroups/group:Group":0,"aws:resourcegroups/resource:Resource":0,"aws:rolesanywhere/profile:Profile":0,"aws:rolesanywhere/trustAnchor:TrustAnchor":0,"aws:route53/cidrCollection:CidrCollection":1,"aws:route53/cidrLocation:CidrLocation":1,"aws:route53/delegationSet:DelegationSet":0,"aws:route53/healthCheck:HealthCheck":0,"aws:route53/hostedZoneDnsSec:HostedZoneDnsSec":0,"aws:route53/keySigningKey:KeySigningKey":0,"aws:route53/queryLog:QueryLog":0,"aws:route53/record:Record":0,"aws:route53/resolverConfig:ResolverConfig":0,"aws:route53/resolverDnsSecConfig:ResolverDnsSecConfig":0,"aws:route53/resolverEndpoint:ResolverEndpoint":0,"aws:route53/resolverFirewallConfig:ResolverFirewallConfig":0,"aws:route53/resolverFirewallDomainList:ResolverFirewallDomainList":0,"aws:route53/resolverFirewallRule:ResolverFirewallRule":0,"aws:route53/resolverFirewallRuleGroup:ResolverFirewallRuleGroup":0,"aws:route53/resolverFirewallRuleGroupAssociation:ResolverFirewallRuleGroupAssociation":0,"aws:route53/resolverQueryLogConfig:ResolverQueryLogConfig":0,"aws:route53/resolverQueryLogConfigAssociation:ResolverQueryLogConfigAssociation":0,"aws:route53/resolverRule:ResolverRule":0,"aws:route53/resolverRuleAssociation:ResolverRuleAssociation":0,"aws:route53/trafficPolicy:TrafficPolicy":0,"aws:route53/trafficPolicyInstance:TrafficPolicyInstance":0,"aws:route53/vpcAssociationAuthorization:VpcAssociationAuthorization":0,"aws:route53/zone:Zone":0,"aws:route53/zoneAssociation:ZoneAssociation":0,"aws:route53domains/delegationSignerRecord:DelegationSignerRecord":1,"aws:route53domains/registeredDomain:RegisteredDomain":0,"aws:route53recoverycontrol/cluster:Cluster":0,"aws:route53recoverycontrol/controlPanel:ControlPanel":0,"aws:route53recoverycontrol/routingControl:RoutingControl":0,"aws:route53recoverycontrol/safetyRule:SafetyRule":0,"aws:route53recoveryreadiness/cell:Cell":0,"aws:route53recoveryreadiness/readinessCheck:ReadinessCheck":0,"aws:route53recoveryreadiness/recoveryGroup:RecoveryGroup":0,"aws:route53recoveryreadiness/resourceSet:ResourceSet":0,"aws:rum/appMonitor:AppMonitor":0,"aws:rum/metricsDestination:MetricsDestination":0,"aws:s3/accessPoint:AccessPoint":0,"aws:s3/accountPublicAccessBlock:AccountPublicAccessBlock":0,"aws:s3/analyticsConfiguration:AnalyticsConfiguration":0,"aws:s3/bucket:Bucket":0,"aws:s3/bucketAccelerateConfigurationV2:BucketAccelerateConfigurationV2":0,"aws:s3/bucketAclV2:BucketAclV2":0,"aws:s3/bucketCorsConfigurationV2:BucketCorsConfigurationV2":0,"aws:s3/bucketIntelligentTieringConfiguration:BucketIntelligentTieringConfiguration":0,"aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2":0,"aws:s3/bucketLoggingV2:BucketLoggingV2":0,"aws:s3/bucketMetric:BucketMetric":0,"aws:s3/bucketNotification:BucketNotification":0,"aws:s3/bucketObject:BucketObject":0,"aws:s3/bucketObjectLockConfigurationV2:BucketObjectLockConfigurationV2":0,"aws:s3/bucketObjectv2:BucketObjectv2":0,"aws:s3/bucketOwnershipControls:BucketOwnershipControls":0,"aws:s3/bucketPolicy:BucketPolicy":0,"aws:s3/bucketPublicAccessBlock:BucketPublicAccessBlock":0,"aws:s3/bucketReplicationConfig:BucketReplicationConfig":0,"aws:s3/bucketRequestPaymentConfigurationV2:BucketRequestPaymentConfigurationV2":0,"aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2":0,"aws:s3/bucketV2:BucketV2":0,"aws:s3/bucketVersioningV2:BucketVersioningV2":0,"aws:s3/bucketWebsiteConfigurationV2:BucketWebsiteConfigurationV2":0,"aws:s3/directoryBucket:DirectoryBucket":1,"aws:s3/inventory:Inventory":0,"aws:s3/objectCopy:ObjectCopy":0,"aws:s3control/accessGrant:AccessGrant":1,"aws:s3control/accessGrantsInstance:AccessGrantsInstance":1,"aws:s3control/accessGrantsInstanceResourcePolicy:AccessGrantsInstanceResourcePolicy":1,"aws:s3control/accessGrantsLocation:AccessGrantsLocation":1,"aws:s3control/accessPointPolicy:AccessPointPolicy":0,"aws:s3control/bucket:Bucket":0,"aws:s3control/bucketLifecycleConfiguration:BucketLifecycleConfiguration":0,"aws:s3control/bucketPolicy:BucketPolicy":0,"aws:s3control/multiRegionAccessPoint:MultiRegionAccessPoint":0,"aws:s3control/multiRegionAccessPointPolicy:MultiRegionAccessPointPolicy":0,"aws:s3control/objectLambdaAccessPoint:ObjectLambdaAccessPoint":0,"aws:s3control/objectLambdaAccessPointPolicy:ObjectLambdaAccessPointPolicy":0,"aws:s3control/storageLensConfiguration:StorageLensConfiguration":0,"aws:s3outposts/endpoint:Endpoint":0,"aws:sagemaker/app:App":0,"aws:sagemaker/appImageConfig:AppImageConfig":0,"aws:sagemaker/codeRepository:CodeRepository":0,"aws:sagemaker/dataQualityJobDefinition:DataQualityJobDefinition":0,"aws:sagemaker/device:Device":0,"aws:sagemaker/deviceFleet:DeviceFleet":0,"aws:sagemaker/domain:Domain":0,"aws:sagemaker/endpoint:Endpoint":0,"aws:sagemaker/endpointConfiguration:EndpointConfiguration":0,"aws:sagemaker/featureGroup:FeatureGroup":0,"aws:sagemaker/flowDefinition:FlowDefinition":0,"aws:sagemaker/humanTaskUI:HumanTaskUI":0,"aws:sagemaker/image:Image":0,"aws:sagemaker/imageVersion:ImageVersion":0,"aws:sagemaker/model:Model":0,"aws:sagemaker/modelPackageGroup:ModelPackageGroup":0,"aws:sagemaker/modelPackageGroupPolicy:ModelPackageGroupPolicy":0,"aws:sagemaker/monitoringSchedule:MonitoringSchedule":0,"aws:sagemaker/notebookInstance:NotebookInstance":0,"aws:sagemaker/notebookInstanceLifecycleConfiguration:NotebookInstanceLifecycleConfiguration":0,"aws:sagemaker/pipeline:Pipeline":0,"aws:sagemaker/project:Project":0,"aws:sagemaker/servicecatalogPortfolioStatus:ServicecatalogPortfolioStatus":0,"aws:sagemaker/space:Space":0,"aws:sagemaker/studioLifecycleConfig:StudioLifecycleConfig":0,"aws:sagemaker/userProfile:UserProfile":0,"aws:sagemaker/workforce:Workforce":0,"aws:sagemaker/workteam:Workteam":0,"aws:scheduler/schedule:Schedule":0,"aws:scheduler/scheduleGroup:ScheduleGroup":0,"aws:schemas/discoverer:Discoverer":0,"aws:schemas/registry:Registry":0,"aws:schemas/registryPolicy:RegistryPolicy":0,"aws:schemas/schema:Schema":0,"aws:secretsmanager/secret:Secret":0,"aws:secretsmanager/secretPolicy:SecretPolicy":0,"aws:secretsmanager/secretRotation:SecretRotation":0,"aws:secretsmanager/secretVersion:SecretVersion":0,"aws:securityhub/account:Account":0,"aws:securityhub/actionTarget:ActionTarget":0,"aws:securityhub/automationRule:AutomationRule":1,"aws:securityhub/configurationPolicy:ConfigurationPolicy":0,"aws:securityhub/configurationPolicyAssociation:ConfigurationPolicyAssociation":0,"aws:securityhub/findingAggregator:FindingAggregator":0,"aws:securityhub/insight:Insight":0,"aws:securityhub/inviteAccepter:InviteAccepter":0,"aws:securityhub/member:Member":0,"aws:securityhub/organizationAdminAccount:OrganizationAdminAccount":0,"aws:securityhub/organizationConfiguration:OrganizationConfiguration":0,"aws:securityhub/productSubscription:ProductSubscription":0,"aws:securityhub/standardsControl:StandardsControl":0,"aws:securityhub/standardsSubscription:StandardsSubscription":0,"aws:securitylake/awsLogSource:AwsLogSource":1,"aws:securitylake/customLogSource:CustomLogSource":1,"aws:securitylake/dataLake:DataLake":1,"aws:securitylake/subscriber:Subscriber":1,"aws:securitylake/subscriberNotification:SubscriberNotification":1,"aws:serverlessrepository/cloudFormationStack:CloudFormationStack":0,"aws:servicecatalog/appregistryApplication:AppregistryApplication":1,"aws:servicecatalog/budgetResourceAssociation:BudgetResourceAssociation":0,"aws:servicecatalog/constraint:Constraint":0,"aws:servicecatalog/organizationsAccess:OrganizationsAccess":0,"aws:servicecatalog/portfolio:Portfolio":0,"aws:servicecatalog/portfolioShare:PortfolioShare":0,"aws:servicecatalog/principalPortfolioAssociation:PrincipalPortfolioAssociation":0,"aws:servicecatalog/product:Product":0,"aws:servicecatalog/productPortfolioAssociation:ProductPortfolioAssociation":0,"aws:servicecatalog/provisionedProduct:ProvisionedProduct":0,"aws:servicecatalog/provisioningArtifact:ProvisioningArtifact":0,"aws:servicecatalog/serviceAction:ServiceAction":0,"aws:servicecatalog/tagOption:TagOption":0,"aws:servicecatalog/tagOptionResourceAssociation:TagOptionResourceAssociation":0,"aws:servicediscovery/httpNamespace:HttpNamespace":0,"aws:servicediscovery/instance:Instance":0,"aws:servicediscovery/privateDnsNamespace:PrivateDnsNamespace":0,"aws:servicediscovery/publicDnsNamespace:PublicDnsNamespace":0,"aws:servicediscovery/service:Service":0,"aws:servicequotas/serviceQuota:ServiceQuota":0,"aws:servicequotas/template:Template":1,"aws:servicequotas/templateAssociation:TemplateAssociation":1,"aws:ses/activeReceiptRuleSet:ActiveReceiptRuleSet":0,"aws:ses/configurationSet:ConfigurationSet":0,"aws:ses/domainDkim:DomainDkim":0,"aws:ses/domainIdentity:DomainIdentity":0,"aws:ses/domainIdentityVerification:DomainIdentityVerification":0,"aws:ses/emailIdentity:EmailIdentity":0,"aws:ses/eventDestination:EventDestination":0,"aws:ses/identityNotificationTopic:IdentityNotificationTopic":0,"aws:ses/identityPolicy:IdentityPolicy":0,"aws:ses/mailFrom:MailFrom":0,"aws:ses/receiptFilter:ReceiptFilter":0,"aws:ses/receiptRule:ReceiptRule":0,"aws:ses/receiptRuleSet:ReceiptRuleSet":0,"aws:ses/template:Template":0,"aws:sesv2/accountVdmAttributes:AccountVdmAttributes":0,"aws:sesv2/configurationSet:ConfigurationSet":0,"aws:sesv2/configurationSetEventDestination:ConfigurationSetEventDestination":0,"aws:sesv2/contactList:ContactList":0,"aws:sesv2/dedicatedIpAssignment:DedicatedIpAssignment":0,"aws:sesv2/dedicatedIpPool:DedicatedIpPool":0,"aws:sesv2/emailIdentity:EmailIdentity":0,"aws:sesv2/emailIdentityFeedbackAttributes:EmailIdentityFeedbackAttributes":0,"aws:sesv2/emailIdentityMailFromAttributes:EmailIdentityMailFromAttributes":0,"aws:sesv2/emailIdentityPolicy:EmailIdentityPolicy":0,"aws:sfn/activity:Activity":0,"aws:sfn/alias:Alias":0,"aws:sfn/stateMachine:StateMachine":0,"aws:shield/applicationLayerAutomaticResponse:ApplicationLayerAutomaticResponse":1,"aws:shield/drtAccessLogBucketAssociation:DrtAccessLogBucketAssociation":1,"aws:shield/drtAccessRoleArnAssociation:DrtAccessRoleArnAssociation":1,"aws:shield/proactiveEngagement:ProactiveEngagement":1,"aws:shield/protection:Protection":0,"aws:shield/protectionGroup:ProtectionGroup":0,"aws:shield/protectionHealthCheckAssociation:ProtectionHealthCheckAssociation":0,"aws:shield/subscription:Subscription":1,"aws:signer/signingJob:SigningJob":0,"aws:signer/signingProfile:SigningProfile":0,"aws:signer/signingProfilePermission:SigningProfilePermission":0,"aws:simpledb/domain:Domain":1,"aws:sns/dataProtectionPolicy:DataProtectionPolicy":0,"aws:sns/platformApplication:PlatformApplication":0,"aws:sns/smsPreferences:SmsPreferences":0,"aws:sns/topic:Topic":0,"aws:sns/topicPolicy:TopicPolicy":0,"aws:sns/topicSubscription:TopicSubscription":0,"aws:sqs/queue:Queue":0,"aws:sqs/queuePolicy:QueuePolicy":0,"aws:sqs/redriveAllowPolicy:RedriveAllowPolicy":0,"aws:sqs/redrivePolicy:RedrivePolicy":0,"aws:ssm/activation:Activation":0,"aws:ssm/association:Association":0,"aws:ssm/contactsRotation:ContactsRotation":1,"aws:ssm/defaultPatchBaseline:DefaultPatchBaseline":0,"aws:ssm/document:Document":0,"aws:ssm/maintenanceWindow:MaintenanceWindow":0,"aws:ssm/maintenanceWindowTarget:MaintenanceWindowTarget":0,"aws:ssm/maintenanceWindowTask:MaintenanceWindowTask":0,"aws:ssm/parameter:Parameter":0,"aws:ssm/patchBaseline:PatchBaseline":0,"aws:ssm/patchGroup:PatchGroup":0,"aws:ssm/resourceDataSync:ResourceDataSync":0,"aws:ssm/serviceSetting:ServiceSetting":0,"aws:ssmcontacts/contact:Contact":0,"aws:ssmcontacts/contactChannel:ContactChannel":0,"aws:ssmcontacts/plan:Plan":0,"aws:ssmincidents/replicationSet:ReplicationSet":0,"aws:ssmincidents/responsePlan:ResponsePlan":0,"aws:ssoadmin/accountAssignment:AccountAssignment":0,"aws:ssoadmin/application:Application":1,"aws:ssoadmin/applicationAccessScope:ApplicationAccessScope":1,"aws:ssoadmin/applicationAssignment:ApplicationAssignment":1,"aws:ssoadmin/applicationAssignmentConfiguration:ApplicationAssignmentConfiguration":1,"aws:ssoadmin/customerManagedPolicyAttachment:CustomerManagedPolicyAttachment":0,"aws:ssoadmin/instanceAccessControlAttributes:InstanceAccessControlAttributes":0,"aws:ssoadmin/managedPolicyAttachment:ManagedPolicyAttachment":0,"aws:ssoadmin/permissionSet:PermissionSet":0,"aws:ssoadmin/permissionSetInlinePolicy:PermissionSetInlinePolicy":0,"aws:ssoadmin/permissionsBoundaryAttachment:PermissionsBoundaryAttachment":0,"aws:ssoadmin/trustedTokenIssuer:TrustedTokenIssuer":1,"aws:storagegateway/cache:Cache":0,"aws:storagegateway/cachesIscsiVolume:CachesIscsiVolume":0,"aws:storagegateway/fileSystemAssociation:FileSystemAssociation":0,"aws:storagegateway/gateway:Gateway":0,"aws:storagegateway/nfsFileShare:NfsFileShare":0,"aws:storagegateway/smbFileShare:SmbFileShare":0,"aws:storagegateway/storedIscsiVolume:StoredIscsiVolume":0,"aws:storagegateway/tapePool:TapePool":0,"aws:storagegateway/uploadBuffer:UploadBuffer":0,"aws:storagegateway/workingStorage:WorkingStorage":0,"aws:swf/domain:Domain":0,"aws:synthetics/canary:Canary":0,"aws:synthetics/group:Group":0,"aws:synthetics/groupAssociation:GroupAssociation":0,"aws:timestreaminfluxdb/dbInstance:DbInstance":1,"aws:timestreamwrite/database:Database":0,"aws:timestreamwrite/table:Table":0,"aws:transcribe/languageModel:LanguageModel":0,"aws:transcribe/medicalVocabulary:MedicalVocabulary":0,"aws:transcribe/vocabulary:Vocabulary":0,"aws:transcribe/vocabularyFilter:VocabularyFilter":0,"aws:transfer/access:Access":0,"aws:transfer/agreement:Agreement":0,"aws:transfer/certificate:Certificate":0,"aws:transfer/connector:Connector":0,"aws:transfer/profile:Profile":0,"aws:transfer/server:Server":0,"aws:transfer/sshKey:SshKey":0,"aws:transfer/tag:Tag":0,"aws:transfer/user:User":0,"aws:transfer/workflow:Workflow":0,"aws:verifiedaccess/endpoint:Endpoint":0,"aws:verifiedaccess/group:Group":0,"aws:verifiedaccess/instance:Instance":0,"aws:verifiedaccess/instanceLoggingConfiguration:InstanceLoggingConfiguration":0,"aws:verifiedaccess/instanceTrustProviderAttachment:InstanceTrustProviderAttachment":0,"aws:verifiedaccess/trustProvider:TrustProvider":0,"aws:verifiedpermissions/identitySource:IdentitySource":1,"aws:verifiedpermissions/policy:Policy":1,"aws:verifiedpermissions/policyStore:PolicyStore":1,"aws:verifiedpermissions/policyTemplate:PolicyTemplate":1,"aws:verifiedpermissions/schema:Schema":1,"aws:vpc/endpointPrivateDns:EndpointPrivateDns":1,"aws:vpc/endpointServicePrivateDnsVerification:EndpointServicePrivateDnsVerification":1,"aws:vpc/securityGroupEgressRule:SecurityGroupEgressRule":1,"aws:vpc/securityGroupIngressRule:SecurityGroupIngressRule":1,"aws:vpclattice/accessLogSubscription:AccessLogSubscription":0,"aws:vpclattice/authPolicy:AuthPolicy":0,"aws:vpclattice/listener:Listener":0,"aws:vpclattice/listenerRule:ListenerRule":0,"aws:vpclattice/resourcePolicy:ResourcePolicy":0,"aws:vpclattice/service:Service":0,"aws:vpclattice/serviceNetwork:ServiceNetwork":0,"aws:vpclattice/serviceNetworkServiceAssociation:ServiceNetworkServiceAssociation":0,"aws:vpclattice/serviceNetworkVpcAssociation:ServiceNetworkVpcAssociation":0,"aws:vpclattice/targetGroup:TargetGroup":0,"aws:vpclattice/targetGroupAttachment:TargetGroupAttachment":0,"aws:waf/byteMatchSet:ByteMatchSet":0,"aws:waf/geoMatchSet:GeoMatchSet":0,"aws:waf/ipSet:IpSet":0,"aws:waf/rateBasedRule:RateBasedRule":0,"aws:waf/regexMatchSet:RegexMatchSet":0,"aws:waf/regexPatternSet:RegexPatternSet":0,"aws:waf/rule:Rule":0,"aws:waf/ruleGroup:RuleGroup":0,"aws:waf/sizeConstraintSet:SizeConstraintSet":0,"aws:waf/sqlInjectionMatchSet:SqlInjectionMatchSet":0,"aws:waf/webAcl:WebAcl":0,"aws:waf/xssMatchSet:XssMatchSet":0,"aws:wafregional/byteMatchSet:ByteMatchSet":0,"aws:wafregional/geoMatchSet:GeoMatchSet":0,"aws:wafregional/ipSet:IpSet":0,"aws:wafregional/rateBasedRule:RateBasedRule":0,"aws:wafregional/regexMatchSet:RegexMatchSet":0,"aws:wafregional/regexPatternSet:RegexPatternSet":0,"aws:wafregional/rule:Rule":0,"aws:wafregional/ruleGroup:RuleGroup":0,"aws:wafregional/sizeConstraintSet:SizeConstraintSet":0,"aws:wafregional/sqlInjectionMatchSet:SqlInjectionMatchSet":0,"aws:wafregional/webAcl:WebAcl":0,"aws:wafregional/webAclAssociation:WebAclAssociation":0,"aws:wafregional/xssMatchSet:XssMatchSet":0,"aws:wafv2/ipSet:IpSet":0,"aws:wafv2/regexPatternSet:RegexPatternSet":0,"aws:wafv2/ruleGroup:RuleGroup":0,"aws:wafv2/webAcl:WebAcl":0,"aws:wafv2/webAclAssociation:WebAclAssociation":0,"aws:wafv2/webAclLoggingConfiguration:WebAclLoggingConfiguration":0,"aws:worklink/fleet:Fleet":0,"aws:worklink/websiteCertificateAuthorityAssociation:WebsiteCertificateAuthorityAssociation":0,"aws:workspaces/connectionAlias:ConnectionAlias":1,"aws:workspaces/directory:Directory":0,"aws:workspaces/ipGroup:IpGroup":0,"aws:workspaces/workspace:Workspace":0,"aws:xray/encryptionConfig:EncryptionConfig":0,"aws:xray/group:Group":0,"aws:xray/samplingRule:SamplingRule":0},"functions":{"aws:acm/getCertificate:getCertificate":0,"aws:acmpca/getCertificate:getCertificate":0,"aws:acmpca/getCertificateAuthority:getCertificateAuthority":0,"aws:alb/getListener:getListener":0,"aws:alb/getLoadBalancer:getLoadBalancer":0,"aws:alb/getTargetGroup:getTargetGroup":0,"aws:amp/getWorkspace:getWorkspace":0,"aws:amp/getWorkspaces:getWorkspaces":0,"aws:apigateway/getAuthorizer:getAuthorizer":0,"aws:apigateway/getAuthorizers:getAuthorizers":0,"aws:apigateway/getDomainName:getDomainName":0,"aws:apigateway/getExport:getExport":0,"aws:apigateway/getKey:getKey":0,"aws:apigateway/getResource:getResource":0,"aws:apigateway/getRestApi:getRestApi":0,"aws:apigateway/getSdk:getSdk":0,"aws:apigateway/getVpcLink:getVpcLink":0,"aws:apigatewayv2/getApi:getApi":0,"aws:apigatewayv2/getApis:getApis":0,"aws:apigatewayv2/getExport:getExport":0,"aws:apigatewayv2/getVpcLink:getVpcLink":0,"aws:appconfig/getConfigurationProfile:getConfigurationProfile":0,"aws:appconfig/getConfigurationProfiles:getConfigurationProfiles":0,"aws:appconfig/getEnvironment:getEnvironment":0,"aws:appconfig/getEnvironments:getEnvironments":0,"aws:appintegrations/getEventIntegration:getEventIntegration":0,"aws:appmesh/getGatewayRoute:getGatewayRoute":0,"aws:appmesh/getMesh:getMesh":0,"aws:appmesh/getRoute:getRoute":0,"aws:appmesh/getVirtualGateway:getVirtualGateway":0,"aws:appmesh/getVirtualNode:getVirtualNode":0,"aws:appmesh/getVirtualRouter:getVirtualRouter":0,"aws:appmesh/getVirtualService:getVirtualService":0,"aws:apprunner/getHostedZoneId:getHostedZoneId":1,"aws:appstream/getImage:getImage":1,"aws:athena/getNamedQuery:getNamedQuery":0,"aws:auditmanager/getControl:getControl":1,"aws:auditmanager/getFramework:getFramework":1,"aws:autoscaling/getAmiIds:getAmiIds":0,"aws:autoscaling/getGroup:getGroup":0,"aws:backup/getFramework:getFramework":0,"aws:backup/getPlan:getPlan":0,"aws:backup/getReportPlan:getReportPlan":0,"aws:backup/getSelection:getSelection":0,"aws:backup/getVault:getVault":0,"aws:batch/getComputeEnvironment:getComputeEnvironment":0,"aws:batch/getJobDefinition:getJobDefinition":1,"aws:batch/getJobQueue:getJobQueue":0,"aws:batch/getSchedulingPolicy:getSchedulingPolicy":0,"aws:bedrock/getCustomModel:getCustomModel":1,"aws:bedrock/getCustomModels:getCustomModels":1,"aws:bedrockfoundation/getModel:getModel":1,"aws:bedrockfoundation/getModels:getModels":1,"aws:budgets/getBudget:getBudget":0,"aws:chatbot/getSlackWorkspace:getSlackWorkspace":1,"aws:cloudcontrol/getResource:getResource":0,"aws:cloudformation/getCloudFormationType:getCloudFormationType":0,"aws:cloudformation/getExport:getExport":0,"aws:cloudformation/getStack:getStack":0,"aws:cloudfront/getCachePolicy:getCachePolicy":0,"aws:cloudfront/getDistribution:getDistribution":0,"aws:cloudfront/getFunction:getFunction":0,"aws:cloudfront/getLogDeliveryCanonicalUserId:getLogDeliveryCanonicalUserId":0,"aws:cloudfront/getOriginAccessControl:getOriginAccessControl":1,"aws:cloudfront/getOriginAccessIdentities:getOriginAccessIdentities":0,"aws:cloudfront/getOriginAccessIdentity:getOriginAccessIdentity":0,"aws:cloudfront/getOriginRequestPolicy:getOriginRequestPolicy":0,"aws:cloudfront/getRealtimeLogConfig:getRealtimeLogConfig":0,"aws:cloudfront/getResponseHeadersPolicy:getResponseHeadersPolicy":0,"aws:cloudhsmv2/getCluster:getCluster":0,"aws:cloudtrail/getServiceAccount:getServiceAccount":0,"aws:cloudwatch/getEventBus:getEventBus":0,"aws:cloudwatch/getEventConnection:getEventConnection":0,"aws:cloudwatch/getEventSource:getEventSource":0,"aws:cloudwatch/getLogDataProtectionPolicyDocument:getLogDataProtectionPolicyDocument":0,"aws:cloudwatch/getLogGroup:getLogGroup":0,"aws:cloudwatch/getLogGroups:getLogGroups":0,"aws:codeartifact/getAuthorizationToken:getAuthorizationToken":0,"aws:codeartifact/getRepositoryEndpoint:getRepositoryEndpoint":0,"aws:codecatalyst/getDevEnvironment:getDevEnvironment":0,"aws:codecommit/getApprovalRuleTemplate:getApprovalRuleTemplate":0,"aws:codecommit/getRepository:getRepository":0,"aws:codeguruprofiler/getProfilingGroup:getProfilingGroup":1,"aws:codestarconnections/getConnection:getConnection":0,"aws:cognito/getIdentityPool:getIdentityPool":0,"aws:cognito/getUserGroup:getUserGroup":1,"aws:cognito/getUserGroups:getUserGroups":1,"aws:cognito/getUserPool:getUserPool":1,"aws:cognito/getUserPoolClient:getUserPoolClient":0,"aws:cognito/getUserPoolClients:getUserPoolClients":0,"aws:cognito/getUserPoolSigningCertificate:getUserPoolSigningCertificate":0,"aws:cognito/getUserPools:getUserPools":0,"aws:connect/getBotAssociation:getBotAssociation":0,"aws:connect/getContactFlow:getContactFlow":0,"aws:connect/getContactFlowModule:getContactFlowModule":0,"aws:connect/getHoursOfOperation:getHoursOfOperation":0,"aws:connect/getInstance:getInstance":0,"aws:connect/getInstanceStorageConfig:getInstanceStorageConfig":0,"aws:connect/getLambdaFunctionAssociation:getLambdaFunctionAssociation":0,"aws:connect/getPrompt:getPrompt":0,"aws:connect/getQueue:getQueue":0,"aws:connect/getQuickConnect:getQuickConnect":0,"aws:connect/getRoutingProfile:getRoutingProfile":0,"aws:connect/getSecurityProfile:getSecurityProfile":0,"aws:connect/getUser:getUser":0,"aws:connect/getUserHierarchyGroup:getUserHierarchyGroup":0,"aws:connect/getUserHierarchyStructure:getUserHierarchyStructure":0,"aws:connect/getVocabulary:getVocabulary":0,"aws:controltower/getControls:getControls":0,"aws:costexplorer/getCostCategory:getCostCategory":0,"aws:costexplorer/getTags:getTags":0,"aws:cur/getReportDefinition:getReportDefinition":0,"aws:datapipeline/getPipeline:getPipeline":0,"aws:datapipeline/getPipelineDefinition:getPipelineDefinition":0,"aws:datazone/getEnvironmentBlueprint:getEnvironmentBlueprint":1,"aws:devopsguru/getNotificationChannel:getNotificationChannel":1,"aws:devopsguru/getResourceCollection:getResourceCollection":1,"aws:directconnect/getConnection:getConnection":0,"aws:directconnect/getGateway:getGateway":0,"aws:directconnect/getLocation:getLocation":0,"aws:directconnect/getLocations:getLocations":0,"aws:directconnect/getRouterConfiguration:getRouterConfiguration":0,"aws:directoryservice/getDirectory:getDirectory":0,"aws:dms/getCertificate:getCertificate":0,"aws:dms/getEndpoint:getEndpoint":0,"aws:dms/getReplicationInstance:getReplicationInstance":0,"aws:dms/getReplicationSubnetGroup:getReplicationSubnetGroup":0,"aws:dms/getReplicationTask:getReplicationTask":0,"aws:docdb/getEngineVersion:getEngineVersion":0,"aws:docdb/getOrderableDbInstance:getOrderableDbInstance":0,"aws:dynamodb/getTable:getTable":0,"aws:dynamodb/getTableItem:getTableItem":0,"aws:ebs/getDefaultKmsKey:getDefaultKmsKey":0,"aws:ebs/getEbsVolumes:getEbsVolumes":0,"aws:ebs/getEncryptionByDefault:getEncryptionByDefault":0,"aws:ebs/getSnapshot:getSnapshot":0,"aws:ebs/getSnapshotIds:getSnapshotIds":0,"aws:ebs/getVolume:getVolume":0,"aws:ec2/getAmi:getAmi":0,"aws:ec2/getAmiIds:getAmiIds":0,"aws:ec2/getCapacityBlockOffering:getCapacityBlockOffering":1,"aws:ec2/getCoipPool:getCoipPool":0,"aws:ec2/getCoipPools:getCoipPools":0,"aws:ec2/getCustomerGateway:getCustomerGateway":0,"aws:ec2/getDedicatedHost:getDedicatedHost":0,"aws:ec2/getEips:getEips":0,"aws:ec2/getElasticIp:getElasticIp":0,"aws:ec2/getInstance:getInstance":0,"aws:ec2/getInstanceType:getInstanceType":0,"aws:ec2/getInstanceTypeOffering:getInstanceTypeOffering":0,"aws:ec2/getInstanceTypeOfferings:getInstanceTypeOfferings":0,"aws:ec2/getInstanceTypes:getInstanceTypes":0,"aws:ec2/getInstances:getInstances":0,"aws:ec2/getInternetGateway:getInternetGateway":0,"aws:ec2/getIpamPreviewNextCidr:getIpamPreviewNextCidr":0,"aws:ec2/getKeyPair:getKeyPair":0,"aws:ec2/getLaunchConfiguration:getLaunchConfiguration":0,"aws:ec2/getLaunchTemplate:getLaunchTemplate":0,"aws:ec2/getLocalGateway:getLocalGateway":0,"aws:ec2/getLocalGatewayRouteTable:getLocalGatewayRouteTable":0,"aws:ec2/getLocalGatewayRouteTables:getLocalGatewayRouteTables":0,"aws:ec2/getLocalGatewayVirtualInterface:getLocalGatewayVirtualInterface":0,"aws:ec2/getLocalGatewayVirtualInterfaceGroup:getLocalGatewayVirtualInterfaceGroup":0,"aws:ec2/getLocalGatewayVirtualInterfaceGroups:getLocalGatewayVirtualInterfaceGroups":0,"aws:ec2/getLocalGateways:getLocalGateways":0,"aws:ec2/getManagedPrefixList:getManagedPrefixList":0,"aws:ec2/getManagedPrefixLists:getManagedPrefixLists":0,"aws:ec2/getNatGateway:getNatGateway":0,"aws:ec2/getNatGateways:getNatGateways":0,"aws:ec2/getNetworkAcls:getNetworkAcls":0,"aws:ec2/getNetworkInsightsAnalysis:getNetworkInsightsAnalysis":0,"aws:ec2/getNetworkInsightsPath:getNetworkInsightsPath":0,"aws:ec2/getNetworkInterface:getNetworkInterface":0,"aws:ec2/getNetworkInterfaces:getNetworkInterfaces":0,"aws:ec2/getPrefixList:getPrefixList":0,"aws:ec2/getPublicIpv4Pool:getPublicIpv4Pool":0,"aws:ec2/getPublicIpv4Pools:getPublicIpv4Pools":0,"aws:ec2/getRoute:getRoute":0,"aws:ec2/getRouteTable:getRouteTable":0,"aws:ec2/getRouteTables:getRouteTables":0,"aws:ec2/getSecurityGroup:getSecurityGroup":0,"aws:ec2/getSecurityGroups:getSecurityGroups":0,"aws:ec2/getSerialConsoleAccess:getSerialConsoleAccess":0,"aws:ec2/getSpotPrice:getSpotPrice":0,"aws:ec2/getSubnet:getSubnet":0,"aws:ec2/getSubnets:getSubnets":0,"aws:ec2/getTransitGatewayRouteTables:getTransitGatewayRouteTables":0,"aws:ec2/getVpc:getVpc":0,"aws:ec2/getVpcDhcpOptions:getVpcDhcpOptions":0,"aws:ec2/getVpcEndpoint:getVpcEndpoint":0,"aws:ec2/getVpcEndpointService:getVpcEndpointService":0,"aws:ec2/getVpcIamPool:getVpcIamPool":0,"aws:ec2/getVpcIamPoolCidrs:getVpcIamPoolCidrs":0,"aws:ec2/getVpcIamPools:getVpcIamPools":0,"aws:ec2/getVpcIpamPool:getVpcIpamPool":0,"aws:ec2/getVpcIpamPoolCidrs:getVpcIpamPoolCidrs":0,"aws:ec2/getVpcIpamPools:getVpcIpamPools":0,"aws:ec2/getVpcPeeringConnection:getVpcPeeringConnection":0,"aws:ec2/getVpcPeeringConnections:getVpcPeeringConnections":0,"aws:ec2/getVpcs:getVpcs":0,"aws:ec2/getVpnGateway:getVpnGateway":0,"aws:ec2clientvpn/getEndpoint:getEndpoint":0,"aws:ec2transitgateway/getAttachment:getAttachment":0,"aws:ec2transitgateway/getAttachments:getAttachments":0,"aws:ec2transitgateway/getConnect:getConnect":0,"aws:ec2transitgateway/getConnectPeer:getConnectPeer":0,"aws:ec2transitgateway/getDirectConnectGatewayAttachment:getDirectConnectGatewayAttachment":0,"aws:ec2transitgateway/getMulticastDomain:getMulticastDomain":0,"aws:ec2transitgateway/getPeeringAttachment:getPeeringAttachment":0,"aws:ec2transitgateway/getPeeringAttachments:getPeeringAttachments":0,"aws:ec2transitgateway/getRouteTable:getRouteTable":0,"aws:ec2transitgateway/getRouteTableAssociations:getRouteTableAssociations":0,"aws:ec2transitgateway/getRouteTablePropagations:getRouteTablePropagations":0,"aws:ec2transitgateway/getRouteTableRoutes:getRouteTableRoutes":0,"aws:ec2transitgateway/getTransitGateway:getTransitGateway":0,"aws:ec2transitgateway/getVpcAttachment:getVpcAttachment":0,"aws:ec2transitgateway/getVpcAttachments:getVpcAttachments":0,"aws:ec2transitgateway/getVpnAttachment:getVpnAttachment":0,"aws:ecr/getAuthorizationToken:getAuthorizationToken":0,"aws:ecr/getCredentials:getCredentials":0,"aws:ecr/getImage:getImage":0,"aws:ecr/getLifecyclePolicyDocument:getLifecyclePolicyDocument":1,"aws:ecr/getPullThroughCacheRule:getPullThroughCacheRule":0,"aws:ecr/getRepositories:getRepositories":1,"aws:ecr/getRepository:getRepository":0,"aws:ecr/getRepositoryCreationTemplate:getRepositoryCreationTemplate":0,"aws:ecrpublic/getAuthorizationToken:getAuthorizationToken":0,"aws:ecs/getCluster:getCluster":0,"aws:ecs/getContainerDefinition:getContainerDefinition":0,"aws:ecs/getService:getService":0,"aws:ecs/getTaskDefinition:getTaskDefinition":0,"aws:ecs/getTaskExecution:getTaskExecution":0,"aws:efs/getAccessPoint:getAccessPoint":0,"aws:efs/getAccessPoints:getAccessPoints":0,"aws:efs/getFileSystem:getFileSystem":0,"aws:efs/getMountTarget:getMountTarget":0,"aws:eks/getAccessEntry:getAccessEntry":0,"aws:eks/getAddon:getAddon":0,"aws:eks/getAddonVersion:getAddonVersion":0,"aws:eks/getCluster:getCluster":0,"aws:eks/getClusterAuth:getClusterAuth":0,"aws:eks/getClusters:getClusters":0,"aws:eks/getNodeGroup:getNodeGroup":0,"aws:eks/getNodeGroups:getNodeGroups":0,"aws:elasticache/getCluster:getCluster":0,"aws:elasticache/getReplicationGroup:getReplicationGroup":0,"aws:elasticache/getSubnetGroup:getSubnetGroup":0,"aws:elasticache/getUser:getUser":0,"aws:elasticbeanstalk/getApplication:getApplication":0,"aws:elasticbeanstalk/getHostedZone:getHostedZone":0,"aws:elasticbeanstalk/getSolutionStack:getSolutionStack":0,"aws:elasticsearch/getDomain:getDomain":0,"aws:elb/getHostedZoneId:getHostedZoneId":0,"aws:elb/getLoadBalancer:getLoadBalancer":0,"aws:elb/getServiceAccount:getServiceAccount":0,"aws:emr/getReleaseLabels:getReleaseLabels":0,"aws:emr/getSupportedInstanceTypes:getSupportedInstanceTypes":1,"aws:emrcontainers/getVirtualCluster:getVirtualCluster":0,"aws:fsx/getOntapFileSystem:getOntapFileSystem":0,"aws:fsx/getOntapStorageVirtualMachine:getOntapStorageVirtualMachine":0,"aws:fsx/getOntapStorageVirtualMachines:getOntapStorageVirtualMachines":0,"aws:fsx/getOpenZfsSnapshot:getOpenZfsSnapshot":0,"aws:fsx/getWindowsFileSystem:getWindowsFileSystem":0,"aws:globalaccelerator/getAccelerator:getAccelerator":1,"aws:globalaccelerator/getCustomRoutingAccelerator:getCustomRoutingAccelerator":0,"aws:glue/getCatalogTable:getCatalogTable":0,"aws:glue/getConnection:getConnection":0,"aws:glue/getDataCatalogEncryptionSettings:getDataCatalogEncryptionSettings":0,"aws:glue/getScript:getScript":0,"aws:grafana/getWorkspace:getWorkspace":0,"aws:guardduty/getDetector:getDetector":0,"aws:guardduty/getFindingIds:getFindingIds":1,"aws:iam/getAccessKeys:getAccessKeys":0,"aws:iam/getAccountAlias:getAccountAlias":0,"aws:iam/getGroup:getGroup":0,"aws:iam/getInstanceProfile:getInstanceProfile":0,"aws:iam/getInstanceProfiles:getInstanceProfiles":0,"aws:iam/getOpenIdConnectProvider:getOpenIdConnectProvider":0,"aws:iam/getPolicy:getPolicy":0,"aws:iam/getPolicyDocument:getPolicyDocument":0,"aws:iam/getPrincipalPolicySimulation:getPrincipalPolicySimulation":0,"aws:iam/getRole:getRole":0,"aws:iam/getRoles:getRoles":0,"aws:iam/getSamlProvider:getSamlProvider":0,"aws:iam/getServerCertificate:getServerCertificate":0,"aws:iam/getSessionContext:getSessionContext":0,"aws:iam/getUser:getUser":0,"aws:iam/getUserSshKey:getUserSshKey":0,"aws:iam/getUsers:getUsers":0,"aws:identitystore/getGroup:getGroup":0,"aws:identitystore/getGroups:getGroups":1,"aws:identitystore/getUser:getUser":0,"aws:imagebuilder/getComponent:getComponent":0,"aws:imagebuilder/getComponents:getComponents":0,"aws:imagebuilder/getContainerRecipe:getContainerRecipe":0,"aws:imagebuilder/getContainerRecipes:getContainerRecipes":0,"aws:imagebuilder/getDistributionConfiguration:getDistributionConfiguration":0,"aws:imagebuilder/getDistributionConfigurations:getDistributionConfigurations":0,"aws:imagebuilder/getImage:getImage":0,"aws:imagebuilder/getImagePipeline:getImagePipeline":0,"aws:imagebuilder/getImagePipelines:getImagePipelines":0,"aws:imagebuilder/getImageRecipe:getImageRecipe":0,"aws:imagebuilder/getImageRecipes:getImageRecipes":0,"aws:imagebuilder/getInfrastructureConfiguration:getInfrastructureConfiguration":0,"aws:imagebuilder/getInfrastructureConfigurations:getInfrastructureConfigurations":0,"aws:index/getArn:getArn":1,"aws:index/getAvailabilityZone:getAvailabilityZone":0,"aws:index/getAvailabilityZones:getAvailabilityZones":0,"aws:index/getBillingServiceAccount:getBillingServiceAccount":1,"aws:index/getCallerIdentity:getCallerIdentity":1,"aws:index/getDefaultTags:getDefaultTags":1,"aws:index/getIpRanges:getIpRanges":1,"aws:index/getPartition:getPartition":1,"aws:index/getRegion:getRegion":1,"aws:index/getRegions:getRegions":1,"aws:index/getService:getService":1,"aws:index/getServicePrincipal:getServicePrincipal":1,"aws:inspector/getRulesPackages:getRulesPackages":0,"aws:iot/getEndpoint:getEndpoint":0,"aws:iot/getRegistrationCode:getRegistrationCode":0,"aws:ivs/getStreamKey:getStreamKey":0,"aws:kendra/getExperience:getExperience":0,"aws:kendra/getFaq:getFaq":0,"aws:kendra/getIndex:getIndex":0,"aws:kendra/getQuerySuggestionsBlockList:getQuerySuggestionsBlockList":0,"aws:kendra/getThesaurus:getThesaurus":0,"aws:kinesis/getFirehoseDeliveryStream:getFirehoseDeliveryStream":0,"aws:kinesis/getStream:getStream":0,"aws:kinesis/getStreamConsumer:getStreamConsumer":0,"aws:kms/getAlias:getAlias":0,"aws:kms/getCipherText:getCipherText":0,"aws:kms/getCustomKeyStore:getCustomKeyStore":0,"aws:kms/getKey:getKey":0,"aws:kms/getPublicKey:getPublicKey":0,"aws:kms/getSecret:getSecret":0,"aws:kms/getSecrets:getSecrets":0,"aws:lakeformation/getDataLakeSettings:getDataLakeSettings":0,"aws:lakeformation/getPermissions:getPermissions":0,"aws:lakeformation/getResource:getResource":0,"aws:lambda/getAlias:getAlias":0,"aws:lambda/getCodeSigningConfig:getCodeSigningConfig":0,"aws:lambda/getFunction:getFunction":0,"aws:lambda/getFunctionUrl:getFunctionUrl":0,"aws:lambda/getFunctions:getFunctions":0,"aws:lambda/getInvocation:getInvocation":0,"aws:lambda/getLayerVersion:getLayerVersion":0,"aws:lb/getHostedZoneId:getHostedZoneId":0,"aws:lb/getLbs:getLbs":0,"aws:lb/getListener:getListener":0,"aws:lb/getLoadBalancer:getLoadBalancer":0,"aws:lb/getTargetGroup:getTargetGroup":0,"aws:lb/getTrustStore:getTrustStore":0,"aws:lex/getBot:getBot":0,"aws:lex/getBotAlias:getBotAlias":0,"aws:lex/getIntent:getIntent":0,"aws:lex/getSlotType:getSlotType":0,"aws:licensemanager/getLicenseGrants:getLicenseGrants":0,"aws:licensemanager/getReceivedLicense:getReceivedLicense":0,"aws:licensemanager/getReceivedLicenses:getReceivedLicenses":0,"aws:location/getGeofenceCollection:getGeofenceCollection":0,"aws:location/getMap:getMap":0,"aws:location/getPlaceIndex:getPlaceIndex":0,"aws:location/getRouteCalculator:getRouteCalculator":0,"aws:location/getTracker:getTracker":0,"aws:location/getTrackerAssociation:getTrackerAssociation":0,"aws:location/getTrackerAssociations:getTrackerAssociations":0,"aws:mediaconvert/getQueue:getQueue":0,"aws:medialive/getInput:getInput":1,"aws:memorydb/getAcl:getAcl":0,"aws:memorydb/getCluster:getCluster":0,"aws:memorydb/getParameterGroup:getParameterGroup":0,"aws:memorydb/getSnapshot:getSnapshot":0,"aws:memorydb/getSubnetGroup:getSubnetGroup":0,"aws:memorydb/getUser:getUser":0,"aws:mq/getBroker:getBroker":0,"aws:mq/getBrokerEngineTypes:getBrokerEngineTypes":0,"aws:mq/getInstanceTypeOfferings:getInstanceTypeOfferings":0,"aws:msk/getBootstrapBrokers:getBootstrapBrokers":0,"aws:msk/getBrokerNodes:getBrokerNodes":0,"aws:msk/getCluster:getCluster":0,"aws:msk/getConfiguration:getConfiguration":0,"aws:msk/getKafkaVersion:getKafkaVersion":0,"aws:msk/getVpcConnection:getVpcConnection":0,"aws:mskconnect/getConnector:getConnector":0,"aws:mskconnect/getCustomPlugin:getCustomPlugin":0,"aws:mskconnect/getWorkerConfiguration:getWorkerConfiguration":0,"aws:neptune/getEngineVersion:getEngineVersion":0,"aws:neptune/getOrderableDbInstance:getOrderableDbInstance":0,"aws:networkfirewall/getFirewall:getFirewall":0,"aws:networkfirewall/getFirewallPolicy:getFirewallPolicy":0,"aws:networkfirewall/getResourcePolicy:getResourcePolicy":0,"aws:networkmanager/getConnection:getConnection":0,"aws:networkmanager/getConnections:getConnections":0,"aws:networkmanager/getCoreNetworkPolicyDocument:getCoreNetworkPolicyDocument":0,"aws:networkmanager/getDevice:getDevice":0,"aws:networkmanager/getDevices:getDevices":0,"aws:networkmanager/getGlobalNetwork:getGlobalNetwork":0,"aws:networkmanager/getGlobalNetworks:getGlobalNetworks":0,"aws:networkmanager/getLink:getLink":0,"aws:networkmanager/getLinks:getLinks":0,"aws:networkmanager/getSite:getSite":0,"aws:networkmanager/getSites:getSites":0,"aws:oam/getLink:getLink":0,"aws:oam/getLinks:getLinks":0,"aws:oam/getSink:getSink":0,"aws:oam/getSinks:getSinks":0,"aws:opensearch/getDomain:getDomain":0,"aws:opensearch/getServerlessAccessPolicy:getServerlessAccessPolicy":1,"aws:opensearch/getServerlessCollection:getServerlessCollection":1,"aws:opensearch/getServerlessLifecyclePolicy:getServerlessLifecyclePolicy":1,"aws:opensearch/getServerlessSecurityConfig:getServerlessSecurityConfig":1,"aws:opensearch/getServerlessSecurityPolicy:getServerlessSecurityPolicy":0,"aws:opensearch/getServerlessVpcEndpoint:getServerlessVpcEndpoint":0,"aws:organizations/getDelegatedAdministrators:getDelegatedAdministrators":0,"aws:organizations/getDelegatedServices:getDelegatedServices":0,"aws:organizations/getOrganization:getOrganization":0,"aws:organizations/getOrganizationalUnit:getOrganizationalUnit":0,"aws:organizations/getOrganizationalUnitChildAccounts:getOrganizationalUnitChildAccounts":0,"aws:organizations/getOrganizationalUnitDescendantAccounts:getOrganizationalUnitDescendantAccounts":0,"aws:organizations/getOrganizationalUnits:getOrganizationalUnits":0,"aws:organizations/getPolicies:getPolicies":0,"aws:organizations/getPoliciesForTarget:getPoliciesForTarget":0,"aws:organizations/getPolicy:getPolicy":0,"aws:organizations/getResourceTags:getResourceTags":0,"aws:outposts/getAsset:getAsset":0,"aws:outposts/getAssets:getAssets":0,"aws:outposts/getOutpost:getOutpost":0,"aws:outposts/getOutpostInstanceType:getOutpostInstanceType":0,"aws:outposts/getOutpostInstanceTypes:getOutpostInstanceTypes":0,"aws:outposts/getOutposts:getOutposts":0,"aws:outposts/getSite:getSite":0,"aws:outposts/getSites:getSites":0,"aws:polly/getVoices:getVoices":1,"aws:pricing/getProduct:getProduct":0,"aws:qldb/getLedger:getLedger":0,"aws:quicksight/getDataSet:getDataSet":0,"aws:quicksight/getQuicksightGroup:getQuicksightGroup":0,"aws:quicksight/getQuicksightUser:getQuicksightUser":0,"aws:quicksight/getTheme:getTheme":0,"aws:ram/getResourceShare:getResourceShare":0,"aws:rds/getCertificate:getCertificate":0,"aws:rds/getCluster:getCluster":0,"aws:rds/getClusterSnapshot:getClusterSnapshot":0,"aws:rds/getClusters:getClusters":0,"aws:rds/getEngineVersion:getEngineVersion":0,"aws:rds/getEventCategories:getEventCategories":0,"aws:rds/getInstance:getInstance":0,"aws:rds/getInstances:getInstances":0,"aws:rds/getOrderableDbInstance:getOrderableDbInstance":0,"aws:rds/getParameterGroup:getParameterGroup":0,"aws:rds/getProxy:getProxy":0,"aws:rds/getReservedInstanceOffering:getReservedInstanceOffering":0,"aws:rds/getSnapshot:getSnapshot":0,"aws:rds/getSubnetGroup:getSubnetGroup":0,"aws:redshift/getCluster:getCluster":0,"aws:redshift/getClusterCredentials:getClusterCredentials":0,"aws:redshift/getDataShares:getDataShares":1,"aws:redshift/getOrderableCluster:getOrderableCluster":0,"aws:redshift/getProducerDataShares:getProducerDataShares":1,"aws:redshift/getServiceAccount:getServiceAccount":0,"aws:redshift/getSubnetGroup:getSubnetGroup":0,"aws:redshiftserverless/getCredentials:getCredentials":0,"aws:redshiftserverless/getNamespace:getNamespace":0,"aws:redshiftserverless/getWorkgroup:getWorkgroup":0,"aws:resourceexplorer/search:Search":1,"aws:resourcegroupstaggingapi/getResources:getResources":0,"aws:route53/getDelegationSet:getDelegationSet":0,"aws:route53/getQueryLogConfig:getQueryLogConfig":0,"aws:route53/getResolverEndpoint:getResolverEndpoint":0,"aws:route53/getResolverFirewallConfig:getResolverFirewallConfig":0,"aws:route53/getResolverFirewallDomainList:getResolverFirewallDomainList":0,"aws:route53/getResolverFirewallRuleGroup:getResolverFirewallRuleGroup":0,"aws:route53/getResolverFirewallRuleGroupAssociation:getResolverFirewallRuleGroupAssociation":0,"aws:route53/getResolverFirewallRules:getResolverFirewallRules":0,"aws:route53/getResolverRule:getResolverRule":0,"aws:route53/getResolverRules:getResolverRules":0,"aws:route53/getTrafficPolicyDocument:getTrafficPolicyDocument":0,"aws:route53/getZone:getZone":0,"aws:s3/getAccountPublicAccessBlock:getAccountPublicAccessBlock":0,"aws:s3/getBucket:getBucket":0,"aws:s3/getBucketObject:getBucketObject":0,"aws:s3/getBucketObjects:getBucketObjects":0,"aws:s3/getBucketPolicy:getBucketPolicy":0,"aws:s3/getCanonicalUserId:getCanonicalUserId":0,"aws:s3/getDirectoryBuckets:getDirectoryBuckets":1,"aws:s3/getObject:getObject":0,"aws:s3/getObjects:getObjects":0,"aws:s3control/getMultiRegionAccessPoint:getMultiRegionAccessPoint":0,"aws:sagemaker/getPrebuiltEcrImage:getPrebuiltEcrImage":0,"aws:secretsmanager/getRandomPassword:getRandomPassword":0,"aws:secretsmanager/getSecret:getSecret":0,"aws:secretsmanager/getSecretRotation:getSecretRotation":0,"aws:secretsmanager/getSecretVersion:getSecretVersion":0,"aws:secretsmanager/getSecrets:getSecrets":0,"aws:serverlessrepository/getApplication:getApplication":0,"aws:servicecatalog/getAppregistryApplication:getAppregistryApplication":1,"aws:servicecatalog/getConstraint:getConstraint":0,"aws:servicecatalog/getLaunchPaths:getLaunchPaths":0,"aws:servicecatalog/getPortfolio:getPortfolio":0,"aws:servicecatalog/getPortfolioConstraints:getPortfolioConstraints":0,"aws:servicecatalog/getProduct:getProduct":0,"aws:servicecatalog/getProvisioningArtifacts:getProvisioningArtifacts":0,"aws:servicediscovery/getDnsNamespace:getDnsNamespace":0,"aws:servicediscovery/getHttpNamespace:getHttpNamespace":0,"aws:servicediscovery/getService:getService":0,"aws:servicequotas/getService:getService":0,"aws:servicequotas/getServiceQuota:getServiceQuota":0,"aws:servicequotas/getTemplates:getTemplates":1,"aws:ses/getActiveReceiptRuleSet:getActiveReceiptRuleSet":0,"aws:ses/getDomainIdentity:getDomainIdentity":0,"aws:ses/getEmailIdentity:getEmailIdentity":0,"aws:sesv2/getConfigurationSet:getConfigurationSet":0,"aws:sesv2/getDedicatedIpPool:getDedicatedIpPool":0,"aws:sesv2/getEmailIdentity:getEmailIdentity":0,"aws:sesv2/getEmailIdentityMailFromAttributes:getEmailIdentityMailFromAttributes":0,"aws:sfn/getActivity:getActivity":0,"aws:sfn/getAlias:getAlias":0,"aws:sfn/getStateMachine:getStateMachine":0,"aws:sfn/getStateMachineVersions:getStateMachineVersions":0,"aws:signer/getSigningJob:getSigningJob":0,"aws:signer/getSigningProfile:getSigningProfile":0,"aws:sns/getTopic:getTopic":0,"aws:sqs/getQueue:getQueue":0,"aws:sqs/getQueues:getQueues":0,"aws:ssm/getContactsRotation:getContactsRotation":1,"aws:ssm/getDocument:getDocument":0,"aws:ssm/getInstances:getInstances":0,"aws:ssm/getMaintenanceWindows:getMaintenanceWindows":0,"aws:ssm/getParameter:getParameter":0,"aws:ssm/getParametersByPath:getParametersByPath":0,"aws:ssm/getPatchBaseline:getPatchBaseline":0,"aws:ssmcontacts/getContact:getContact":0,"aws:ssmcontacts/getContactChannel:getContactChannel":0,"aws:ssmcontacts/getPlan:getPlan":0,"aws:ssmincidents/getReplicationSet:getReplicationSet":0,"aws:ssmincidents/getResponsePlan:getResponsePlan":0,"aws:ssoadmin/getApplication:getApplication":1,"aws:ssoadmin/getApplicationAssignments:getApplicationAssignments":1,"aws:ssoadmin/getApplicationProviders:getApplicationProviders":1,"aws:ssoadmin/getInstances:getInstances":0,"aws:ssoadmin/getPermissionSet:getPermissionSet":0,"aws:ssoadmin/getPrincipalApplicationAssignments:getPrincipalApplicationAssignments":1,"aws:storagegateway/getLocalDisk:getLocalDisk":0,"aws:timestreamwrite/getDatabase:getDatabase":1,"aws:timestreamwrite/getTable:getTable":1,"aws:transfer/getConnector:getConnector":1,"aws:transfer/getServer:getServer":0,"aws:verifiedpermissions/getPolicyStore:getPolicyStore":1,"aws:vpc/getSecurityGroupRule:getSecurityGroupRule":1,"aws:vpc/getSecurityGroupRules:getSecurityGroupRules":1,"aws:vpclattice/getAuthPolicy:getAuthPolicy":0,"aws:vpclattice/getListener:getListener":0,"aws:vpclattice/getResourcePolicy:getResourcePolicy":0,"aws:vpclattice/getService:getService":0,"aws:vpclattice/getServiceNetwork:getServiceNetwork":0,"aws:waf/getIpset:getIpset":0,"aws:waf/getRateBasedRule:getRateBasedRule":0,"aws:waf/getRule:getRule":0,"aws:waf/getSubscribedRuleGroup:getSubscribedRuleGroup":0,"aws:waf/getWebAcl:getWebAcl":0,"aws:wafregional/getIpset:getIpset":0,"aws:wafregional/getRateBasedMod:getRateBasedMod":0,"aws:wafregional/getRule:getRule":0,"aws:wafregional/getSubscribedRuleGroup:getSubscribedRuleGroup":0,"aws:wafregional/getWebAcl:getWebAcl":0,"aws:wafv2/getIpSet:getIpSet":0,"aws:wafv2/getRegexPatternSet:getRegexPatternSet":0,"aws:wafv2/getRuleGroup:getRuleGroup":0,"aws:wafv2/getWebAcl:getWebAcl":0,"aws:workspaces/getBundle:getBundle":0,"aws:workspaces/getDirectory:getDirectory":0,"aws:workspaces/getImage:getImage":0,"aws:workspaces/getWorkspace:getWorkspace":0}}} \ No newline at end of file diff --git a/provider/cmd/pulumi-resource-aws/schema.json b/provider/cmd/pulumi-resource-aws/schema.json index dcdc405b44b..c0d1c96e2a1 100644 --- a/provider/cmd/pulumi-resource-aws/schema.json +++ b/provider/cmd/pulumi-resource-aws/schema.json @@ -219,6 +219,7 @@ "storagegateway": "StorageGateway", "swf": "Swf", "synthetics": "Synthetics", + "timestreaminfluxdb": "TimestreamInfluxDB", "timestreamwrite": "TimestreamWrite", "transcribe": "Transcribe", "transfer": "Transfer", @@ -15607,6 +15608,28 @@ } } }, + "aws:appsync/GraphQLApiEnhancedMetricsConfig:GraphQLApiEnhancedMetricsConfig": { + "properties": { + "dataSourceLevelMetricsBehavior": { + "type": "string", + "description": "How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS`\n" + }, + "operationLevelMetricsConfig": { + "type": "string", + "description": "How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED`\n" + }, + "resolverLevelMetricsBehavior": { + "type": "string", + "description": "How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS`\n" + } + }, + "type": "object", + "required": [ + "dataSourceLevelMetricsBehavior", + "operationLevelMetricsConfig", + "resolverLevelMetricsBehavior" + ] + }, "aws:appsync/GraphQLApiLambdaAuthorizerConfig:GraphQLApiLambdaAuthorizerConfig": { "properties": { "authorizerResultTtlInSeconds": { @@ -23221,6 +23244,40 @@ }, "type": "object" }, + "aws:chatbot/SlackChannelConfigurationTimeouts:SlackChannelConfigurationTimeouts": { + "properties": { + "create": { + "type": "string", + "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n" + }, + "delete": { + "type": "string", + "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n" + }, + "update": { + "type": "string", + "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n" + } + }, + "type": "object" + }, + "aws:chatbot/TeamsChannelConfigurationTimeouts:TeamsChannelConfigurationTimeouts": { + "properties": { + "create": { + "type": "string", + "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n" + }, + "delete": { + "type": "string", + "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n" + }, + "update": { + "type": "string", + "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n" + } + }, + "type": "object" + }, "aws:chime/SdkvoiceGlobalSettingsVoiceConnector:SdkvoiceGlobalSettingsVoiceConnector": { "properties": { "cdrBucket": { @@ -26523,7 +26580,7 @@ }, "name": { "type": "string", - "description": "A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name.\n" + "description": "A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name.\n" }, "return": { "type": "boolean", @@ -32427,6 +32484,10 @@ "type": "string", "description": "Use this to override the default service endpoint URL\n" }, + "resiliencehub": { + "type": "string", + "description": "Use this to override the default service endpoint URL\n" + }, "resourceexplorer2": { "type": "string", "description": "Use this to override the default service endpoint URL\n" @@ -43654,7 +43715,7 @@ "properties": { "marketType": { "type": "string", - "description": "Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified.\n", + "description": "Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified.\n", "willReplaceOnChanges": true }, "spotOptions": { @@ -59041,6 +59102,26 @@ "filterType" ] }, + "aws:ecr/RepositoryCreationTemplateEncryptionConfiguration:RepositoryCreationTemplateEncryptionConfiguration": { + "properties": { + "encryptionType": { + "type": "string", + "description": "The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`.\n" + }, + "kmsKey": { + "type": "string", + "description": "The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR.\n" + } + }, + "type": "object", + "language": { + "nodejs": { + "requiredOutputs": [ + "kmsKey" + ] + } + } + }, "aws:ecr/RepositoryEncryptionConfiguration:RepositoryEncryptionConfiguration": { "properties": { "encryptionType": { @@ -59151,6 +59232,28 @@ "tagStatus" ] }, + "aws:ecr/getRepositoryCreationTemplateEncryptionConfiguration:getRepositoryCreationTemplateEncryptionConfiguration": { + "properties": { + "encryptionType": { + "type": "string", + "description": "Encryption type to use for any created repositories, either `AES256` or `KMS`.\n" + }, + "kmsKey": { + "type": "string", + "description": "If `encryption_type` is `KMS`, the ARN of the KMS key used.\n" + } + }, + "type": "object", + "required": [ + "encryptionType", + "kmsKey" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, "aws:ecr/getRepositoryEncryptionConfiguration:getRepositoryEncryptionConfiguration": { "properties": { "encryptionType": { @@ -60965,6 +61068,22 @@ "groupName" ] }, + "aws:eks/ClusterUpgradePolicy:ClusterUpgradePolicy": { + "properties": { + "supportType": { + "type": "string", + "description": "Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD`\n" + } + }, + "type": "object", + "language": { + "nodejs": { + "requiredOutputs": [ + "supportType" + ] + } + } + }, "aws:eks/ClusterVpcConfig:ClusterVpcConfig": { "properties": { "clusterSecurityGroupId": { @@ -61392,6 +61511,23 @@ } } }, + "aws:eks/getClusterUpgradePolicy:getClusterUpgradePolicy": { + "properties": { + "supportType": { + "type": "string", + "description": "(Optional) Support type to use for the cluster.\n" + } + }, + "type": "object", + "required": [ + "supportType" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, "aws:eks/getClusterVpcConfig:getClusterVpcConfig": { "properties": { "clusterSecurityGroupId": { @@ -79308,6 +79444,10 @@ "type": "string", "description": "Use this to override the default service endpoint URL\n" }, + "resiliencehub": { + "type": "string", + "description": "Use this to override the default service endpoint URL\n" + }, "resourceexplorer2": { "type": "string", "description": "Use this to override the default service endpoint URL\n" @@ -123545,6 +123685,13 @@ "$ref": "#/types/aws:pipes/PipeLogConfigurationFirehoseLogDestination:PipeLogConfigurationFirehoseLogDestination", "description": "Amazon Kinesis Data Firehose logging configuration settings for the pipe. Detailed below.\n" }, + "includeExecutionDatas": { + "type": "array", + "items": { + "type": "string" + }, + "description": "String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`.\n" + }, "level": { "type": "string", "description": "The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`.\n" @@ -128533,16 +128680,18 @@ "description": "Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster.\n", "willReplaceOnChanges": true }, + "sourceClusterResourceId": { + "type": "string", + "description": "Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available.\n", + "willReplaceOnChanges": true + }, "useLatestRestorableTime": { "type": "boolean", "description": "Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restore_to_time`.\n", "willReplaceOnChanges": true } }, - "type": "object", - "required": [ - "sourceClusterIdentifier" - ] + "type": "object" }, "aws:rds/ClusterS3Import:ClusterS3Import": { "properties": { @@ -144876,6 +145025,23 @@ } } }, + "aws:sfn/ActivityEncryptionConfiguration:ActivityEncryptionConfiguration": { + "properties": { + "kmsDataKeyReusePeriodSeconds": { + "type": "integer", + "description": "Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key.\n" + }, + "kmsKeyId": { + "type": "string", + "description": "The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation.\n" + }, + "type": { + "type": "string", + "description": "The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY`\n" + } + }, + "type": "object" + }, "aws:sfn/AliasRoutingConfiguration:AliasRoutingConfiguration": { "properties": { "stateMachineVersionArn": { @@ -144893,6 +145059,23 @@ "weight" ] }, + "aws:sfn/StateMachineEncryptionConfiguration:StateMachineEncryptionConfiguration": { + "properties": { + "kmsDataKeyReusePeriodSeconds": { + "type": "integer", + "description": "Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`.\n" + }, + "kmsKeyId": { + "type": "string", + "description": "The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation.\n" + }, + "type": { + "type": "string", + "description": "The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY`\n" + } + }, + "type": "object" + }, "aws:sfn/StateMachineLoggingConfiguration:StateMachineLoggingConfiguration": { "properties": { "includeExecutionData": { @@ -147597,6 +147780,49 @@ } } }, + "aws:timestreaminfluxdb/DbInstanceLogDeliveryConfiguration:DbInstanceLogDeliveryConfiguration": { + "properties": { + "s3Configuration": { + "$ref": "#/types/aws:timestreaminfluxdb/DbInstanceLogDeliveryConfigurationS3Configuration:DbInstanceLogDeliveryConfigurationS3Configuration", + "description": "Configuration for S3 bucket log delivery.\n" + } + }, + "type": "object" + }, + "aws:timestreaminfluxdb/DbInstanceLogDeliveryConfigurationS3Configuration:DbInstanceLogDeliveryConfigurationS3Configuration": { + "properties": { + "bucketName": { + "type": "string", + "description": "Name of the S3 bucket to deliver logs to.\n" + }, + "enabled": { + "type": "boolean", + "description": "Indicates whether log delivery to the S3 bucket is enabled.\n\n**Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created.\n" + } + }, + "type": "object", + "required": [ + "bucketName", + "enabled" + ] + }, + "aws:timestreaminfluxdb/DbInstanceTimeouts:DbInstanceTimeouts": { + "properties": { + "create": { + "type": "string", + "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n" + }, + "delete": { + "type": "string", + "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n" + }, + "update": { + "type": "string", + "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n" + } + }, + "type": "object" + }, "aws:timestreamwrite/TableMagneticStoreWriteProperties:TableMagneticStoreWriteProperties": { "properties": { "enableMagneticStoreWrites": { @@ -180566,91 +180792,9 @@ "type": "string", "description": "Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA`\n" }, - "introspectionConfig": { - "type": "string", - "description": "Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/).\n" - }, - "lambdaAuthorizerConfig": { - "$ref": "#/types/aws:appsync/GraphQLApiLambdaAuthorizerConfig:GraphQLApiLambdaAuthorizerConfig", - "description": "Nested argument containing Lambda authorizer configuration. See `lambda_authorizer_config` Block for details.\n" - }, - "logConfig": { - "$ref": "#/types/aws:appsync/GraphQLApiLogConfig:GraphQLApiLogConfig", - "description": "Nested argument containing logging configuration. See `log_config` Block for details.\n" - }, - "name": { - "type": "string", - "description": "User-supplied name for the GraphSQL API.\n" - }, - "openidConnectConfig": { - "$ref": "#/types/aws:appsync/GraphQLApiOpenidConnectConfig:GraphQLApiOpenidConnectConfig", - "description": "Nested argument containing OpenID Connect configuration. See `openid_connect_config` Block for details.\n" - }, - "queryDepthLimit": { - "type": "integer", - "description": "The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query. The default value is `0` (or unspecified), which indicates there's no depth limit. If you set a limit, it can be between `1` and `75` nested levels. This field will produce a limit error if the operation falls out of bounds.\n\nNote that fields can still be set to nullable or non-nullable. If a non-nullable field produces an error, the error will be thrown upwards to the first nullable field available.\n" - }, - "resolverCountLimit": { - "type": "integer", - "description": "The maximum number of resolvers that can be invoked in a single request. The default value is `0` (or unspecified), which will set the limit to `10000`. When specified, the limit value can be between `1` and `10000`. This field will produce a limit error if the operation falls out of bounds.\n" - }, - "schema": { - "type": "string", - "description": "Schema definition, in GraphQL schema language format. This provider cannot perform drift detection of this configuration.\n" - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" - }, - "tagsAll": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", - "deprecationMessage": "Please use `tags` instead." - }, - "uris": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Map of URIs associated with the APIE.g., `uris[\"GRAPHQL\"] = https://ID.appsync-api.REGION.amazonaws.com/graphql`\n" - }, - "userPoolConfig": { - "$ref": "#/types/aws:appsync/GraphQLApiUserPoolConfig:GraphQLApiUserPoolConfig", - "description": "Amazon Cognito User Pool configuration. See `user_pool_config` Block for details.\n" - }, - "visibility": { - "type": "string", - "description": "Sets the value of the GraphQL API to public (`GLOBAL`) or private (`PRIVATE`). If no value is provided, the visibility will be set to `GLOBAL` by default. This value cannot be changed once the API has been created.\n" - }, - "xrayEnabled": { - "type": "boolean", - "description": "Whether tracing with X-ray is enabled. Defaults to false.\n" - } - }, - "required": [ - "arn", - "authenticationType", - "name", - "tagsAll", - "uris" - ], - "inputProperties": { - "additionalAuthenticationProviders": { - "type": "array", - "items": { - "$ref": "#/types/aws:appsync/GraphQLApiAdditionalAuthenticationProvider:GraphQLApiAdditionalAuthenticationProvider" - }, - "description": "One or more additional authentication providers for the GraphSQL API. See `additional_authentication_provider` Block for details.\n" - }, - "authenticationType": { - "type": "string", - "description": "Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA`\n" + "enhancedMetricsConfig": { + "$ref": "#/types/aws:appsync/GraphQLApiEnhancedMetricsConfig:GraphQLApiEnhancedMetricsConfig", + "description": "Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details.\n" }, "introspectionConfig": { "type": "string", @@ -180666,7 +180810,97 @@ }, "name": { "type": "string", - "description": "User-supplied name for the GraphSQL API.\n" + "description": "User-supplied name for the GraphSQL API.\n\nThe following arguments are optional:\n" + }, + "openidConnectConfig": { + "$ref": "#/types/aws:appsync/GraphQLApiOpenidConnectConfig:GraphQLApiOpenidConnectConfig", + "description": "Nested argument containing OpenID Connect configuration. See `openid_connect_config` Block for details.\n" + }, + "queryDepthLimit": { + "type": "integer", + "description": "The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query. The default value is `0` (or unspecified), which indicates there's no depth limit. If you set a limit, it can be between `1` and `75` nested levels. This field will produce a limit error if the operation falls out of bounds.\n\nNote that fields can still be set to nullable or non-nullable. If a non-nullable field produces an error, the error will be thrown upwards to the first nullable field available.\n" + }, + "resolverCountLimit": { + "type": "integer", + "description": "The maximum number of resolvers that can be invoked in a single request. The default value is `0` (or unspecified), which will set the limit to `10000`. When specified, the limit value can be between `1` and `10000`. This field will produce a limit error if the operation falls out of bounds.\n" + }, + "schema": { + "type": "string", + "description": "Schema definition, in GraphQL schema language format. This provider cannot perform drift detection of this configuration.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "deprecationMessage": "Please use `tags` instead." + }, + "uris": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of URIs associated with the APIE.g., `uris[\"GRAPHQL\"] = https://ID.appsync-api.REGION.amazonaws.com/graphql`\n" + }, + "userPoolConfig": { + "$ref": "#/types/aws:appsync/GraphQLApiUserPoolConfig:GraphQLApiUserPoolConfig", + "description": "Amazon Cognito User Pool configuration. See `user_pool_config` Block for details.\n" + }, + "visibility": { + "type": "string", + "description": "Sets the value of the GraphQL API to public (`GLOBAL`) or private (`PRIVATE`). If no value is provided, the visibility will be set to `GLOBAL` by default. This value cannot be changed once the API has been created.\n" + }, + "xrayEnabled": { + "type": "boolean", + "description": "Whether tracing with X-ray is enabled. Defaults to false.\n" + } + }, + "required": [ + "arn", + "authenticationType", + "name", + "tagsAll", + "uris" + ], + "inputProperties": { + "additionalAuthenticationProviders": { + "type": "array", + "items": { + "$ref": "#/types/aws:appsync/GraphQLApiAdditionalAuthenticationProvider:GraphQLApiAdditionalAuthenticationProvider" + }, + "description": "One or more additional authentication providers for the GraphSQL API. See `additional_authentication_provider` Block for details.\n" + }, + "authenticationType": { + "type": "string", + "description": "Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA`\n" + }, + "enhancedMetricsConfig": { + "$ref": "#/types/aws:appsync/GraphQLApiEnhancedMetricsConfig:GraphQLApiEnhancedMetricsConfig", + "description": "Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details.\n" + }, + "introspectionConfig": { + "type": "string", + "description": "Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/).\n" + }, + "lambdaAuthorizerConfig": { + "$ref": "#/types/aws:appsync/GraphQLApiLambdaAuthorizerConfig:GraphQLApiLambdaAuthorizerConfig", + "description": "Nested argument containing Lambda authorizer configuration. See `lambda_authorizer_config` Block for details.\n" + }, + "logConfig": { + "$ref": "#/types/aws:appsync/GraphQLApiLogConfig:GraphQLApiLogConfig", + "description": "Nested argument containing logging configuration. See `log_config` Block for details.\n" + }, + "name": { + "type": "string", + "description": "User-supplied name for the GraphSQL API.\n\nThe following arguments are optional:\n" }, "openidConnectConfig": { "$ref": "#/types/aws:appsync/GraphQLApiOpenidConnectConfig:GraphQLApiOpenidConnectConfig", @@ -180726,6 +180960,10 @@ "type": "string", "description": "Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA`\n" }, + "enhancedMetricsConfig": { + "$ref": "#/types/aws:appsync/GraphQLApiEnhancedMetricsConfig:GraphQLApiEnhancedMetricsConfig", + "description": "Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details.\n" + }, "introspectionConfig": { "type": "string", "description": "Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/).\n" @@ -180740,7 +180978,7 @@ }, "name": { "type": "string", - "description": "User-supplied name for the GraphSQL API.\n" + "description": "User-supplied name for the GraphSQL API.\n\nThe following arguments are optional:\n" }, "openidConnectConfig": { "$ref": "#/types/aws:appsync/GraphQLApiOpenidConnectConfig:GraphQLApiOpenidConnectConfig", @@ -189170,6 +189408,462 @@ "type": "object" } }, + "aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration": { + "description": "Resource for managing an AWS Chatbot Slack Channel Configuration.\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.chatbot.SlackChannelConfiguration(\"test\", {\n configurationName: \"min-slaka-kanal\",\n iamRoleArn: testAwsIamRole.arn,\n slackChannelId: \"C07EZ1ABC23\",\n slackTeamId: \"T07EA123LEP\",\n tags: {\n Name: \"min-slaka-kanal\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.chatbot.SlackChannelConfiguration(\"test\",\n configuration_name=\"min-slaka-kanal\",\n iam_role_arn=test_aws_iam_role[\"arn\"],\n slack_channel_id=\"C07EZ1ABC23\",\n slack_team_id=\"T07EA123LEP\",\n tags={\n \"Name\": \"min-slaka-kanal\",\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.Chatbot.SlackChannelConfiguration(\"test\", new()\n {\n ConfigurationName = \"min-slaka-kanal\",\n IamRoleArn = testAwsIamRole.Arn,\n SlackChannelId = \"C07EZ1ABC23\",\n SlackTeamId = \"T07EA123LEP\",\n Tags = \n {\n { \"Name\", \"min-slaka-kanal\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/chatbot\"\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 := chatbot.NewSlackChannelConfiguration(ctx, \"test\", \u0026chatbot.SlackChannelConfigurationArgs{\n\t\t\tConfigurationName: pulumi.String(\"min-slaka-kanal\"),\n\t\t\tIamRoleArn: pulumi.Any(testAwsIamRole.Arn),\n\t\t\tSlackChannelId: pulumi.String(\"C07EZ1ABC23\"),\n\t\t\tSlackTeamId: pulumi.String(\"T07EA123LEP\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"min-slaka-kanal\"),\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.chatbot.SlackChannelConfiguration;\nimport com.pulumi.aws.chatbot.SlackChannelConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 SlackChannelConfiguration(\"test\", SlackChannelConfigurationArgs.builder()\n .configurationName(\"min-slaka-kanal\")\n .iamRoleArn(testAwsIamRole.arn())\n .slackChannelId(\"C07EZ1ABC23\")\n .slackTeamId(\"T07EA123LEP\")\n .tags(Map.of(\"Name\", \"min-slaka-kanal\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:chatbot:SlackChannelConfiguration\n properties:\n configurationName: min-slaka-kanal\n iamRoleArn: ${testAwsIamRole.arn}\n slackChannelId: C07EZ1ABC23\n slackTeamId: T07EA123LEP\n tags:\n Name: min-slaka-kanal\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Chatbot Slack Channel Configuration using the `chat_configuration_arn`. For example:\n\n```sh\n$ pulumi import aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration example arn:aws:chatbot::012345678901:chat-configuration/slack-channel/min-slaka-kanal\n```\n", + "properties": { + "chatConfigurationArn": { + "type": "string", + "description": "ARN of the Slack channel configuration.\n" + }, + "configurationName": { + "type": "string", + "description": "Name of the Slack channel configuration.\n" + }, + "guardrailPolicyArns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set.\n" + }, + "iamRoleArn": { + "type": "string", + "description": "User-defined role that AWS Chatbot assumes. This is not the service-linked role.\n" + }, + "loggingLevel": { + "type": "string", + "description": "Logging levels include `ERROR`, `INFO`, or `NONE`.\n" + }, + "slackChannelId": { + "type": "string", + "description": "ID of the Slack channel. For example, `C07EZ1ABC23`.\n" + }, + "slackChannelName": { + "type": "string", + "description": "Name of the Slack channel.\n" + }, + "slackTeamId": { + "type": "string", + "description": "ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`.\n\nThe following arguments are optional:\n" + }, + "slackTeamName": { + "type": "string", + "description": "Name of the Slack team.\n" + }, + "snsTopicArns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ARNs of the SNS topics that deliver notifications to AWS Chatbot.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "deprecationMessage": "Please use `tags` instead." + }, + "timeouts": { + "$ref": "#/types/aws:chatbot/SlackChannelConfigurationTimeouts:SlackChannelConfigurationTimeouts" + }, + "userAuthorizationRequired": { + "type": "boolean", + "description": "Enables use of a user role requirement in your chat configuration.\n" + } + }, + "required": [ + "chatConfigurationArn", + "configurationName", + "guardrailPolicyArns", + "iamRoleArn", + "loggingLevel", + "slackChannelId", + "slackChannelName", + "slackTeamId", + "slackTeamName", + "snsTopicArns", + "tagsAll", + "userAuthorizationRequired" + ], + "inputProperties": { + "configurationName": { + "type": "string", + "description": "Name of the Slack channel configuration.\n" + }, + "guardrailPolicyArns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set.\n" + }, + "iamRoleArn": { + "type": "string", + "description": "User-defined role that AWS Chatbot assumes. This is not the service-linked role.\n" + }, + "loggingLevel": { + "type": "string", + "description": "Logging levels include `ERROR`, `INFO`, or `NONE`.\n" + }, + "slackChannelId": { + "type": "string", + "description": "ID of the Slack channel. For example, `C07EZ1ABC23`.\n" + }, + "slackTeamId": { + "type": "string", + "description": "ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`.\n\nThe following arguments are optional:\n" + }, + "snsTopicArns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ARNs of the SNS topics that deliver notifications to AWS Chatbot.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource.\n" + }, + "timeouts": { + "$ref": "#/types/aws:chatbot/SlackChannelConfigurationTimeouts:SlackChannelConfigurationTimeouts" + }, + "userAuthorizationRequired": { + "type": "boolean", + "description": "Enables use of a user role requirement in your chat configuration.\n" + } + }, + "requiredInputs": [ + "configurationName", + "iamRoleArn", + "slackChannelId", + "slackTeamId" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering SlackChannelConfiguration resources.\n", + "properties": { + "chatConfigurationArn": { + "type": "string", + "description": "ARN of the Slack channel configuration.\n" + }, + "configurationName": { + "type": "string", + "description": "Name of the Slack channel configuration.\n" + }, + "guardrailPolicyArns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set.\n" + }, + "iamRoleArn": { + "type": "string", + "description": "User-defined role that AWS Chatbot assumes. This is not the service-linked role.\n" + }, + "loggingLevel": { + "type": "string", + "description": "Logging levels include `ERROR`, `INFO`, or `NONE`.\n" + }, + "slackChannelId": { + "type": "string", + "description": "ID of the Slack channel. For example, `C07EZ1ABC23`.\n" + }, + "slackChannelName": { + "type": "string", + "description": "Name of the Slack channel.\n" + }, + "slackTeamId": { + "type": "string", + "description": "ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`.\n\nThe following arguments are optional:\n" + }, + "slackTeamName": { + "type": "string", + "description": "Name of the Slack team.\n" + }, + "snsTopicArns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ARNs of the SNS topics that deliver notifications to AWS Chatbot.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "deprecationMessage": "Please use `tags` instead." + }, + "timeouts": { + "$ref": "#/types/aws:chatbot/SlackChannelConfigurationTimeouts:SlackChannelConfigurationTimeouts" + }, + "userAuthorizationRequired": { + "type": "boolean", + "description": "Enables use of a user role requirement in your chat configuration.\n" + } + }, + "type": "object" + } + }, + "aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration": { + "description": "Resource for managing an AWS Chatbot Microsoft Teams Channel Configuration.\n\n\u003e **NOTE:** We provide this resource on a best-effort basis. If you are able to test it and find it useful, we welcome your input at GitHub.\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.chatbot.TeamsChannelConfiguration(\"test\", {\n channelId: \"C07EZ1ABC23\",\n configurationName: \"mitt-lags-kanal\",\n iamRoleArn: testAwsIamRole.arn,\n teamId: \"74361522-da01-538d-aa2e-ac7918c6bb92\",\n tenantId: \"1234\",\n tags: {\n Name: \"mitt-lags-kanal\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.chatbot.TeamsChannelConfiguration(\"test\",\n channel_id=\"C07EZ1ABC23\",\n configuration_name=\"mitt-lags-kanal\",\n iam_role_arn=test_aws_iam_role[\"arn\"],\n team_id=\"74361522-da01-538d-aa2e-ac7918c6bb92\",\n tenant_id=\"1234\",\n tags={\n \"Name\": \"mitt-lags-kanal\",\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.Chatbot.TeamsChannelConfiguration(\"test\", new()\n {\n ChannelId = \"C07EZ1ABC23\",\n ConfigurationName = \"mitt-lags-kanal\",\n IamRoleArn = testAwsIamRole.Arn,\n TeamId = \"74361522-da01-538d-aa2e-ac7918c6bb92\",\n TenantId = \"1234\",\n Tags = \n {\n { \"Name\", \"mitt-lags-kanal\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/chatbot\"\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 := chatbot.NewTeamsChannelConfiguration(ctx, \"test\", \u0026chatbot.TeamsChannelConfigurationArgs{\n\t\t\tChannelId: pulumi.String(\"C07EZ1ABC23\"),\n\t\t\tConfigurationName: pulumi.String(\"mitt-lags-kanal\"),\n\t\t\tIamRoleArn: pulumi.Any(testAwsIamRole.Arn),\n\t\t\tTeamId: pulumi.String(\"74361522-da01-538d-aa2e-ac7918c6bb92\"),\n\t\t\tTenantId: pulumi.String(\"1234\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"mitt-lags-kanal\"),\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.chatbot.TeamsChannelConfiguration;\nimport com.pulumi.aws.chatbot.TeamsChannelConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 TeamsChannelConfiguration(\"test\", TeamsChannelConfigurationArgs.builder()\n .channelId(\"C07EZ1ABC23\")\n .configurationName(\"mitt-lags-kanal\")\n .iamRoleArn(testAwsIamRole.arn())\n .teamId(\"74361522-da01-538d-aa2e-ac7918c6bb92\")\n .tenantId(\"1234\")\n .tags(Map.of(\"Name\", \"mitt-lags-kanal\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:chatbot:TeamsChannelConfiguration\n properties:\n channelId: C07EZ1ABC23\n configurationName: mitt-lags-kanal\n iamRoleArn: ${testAwsIamRole.arn}\n teamId: 74361522-da01-538d-aa2e-ac7918c6bb92\n tenantId: '1234'\n tags:\n Name: mitt-lags-kanal\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Chatbot Microsoft Teams Channel Configuration using the `team_id`. For example:\n\n```sh\n$ pulumi import aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration example 5f4f15d2-b958-522a-8333-124aa8bf0925\n```\n", + "properties": { + "channelId": { + "type": "string", + "description": "ID of the Microsoft Teams channel.\n" + }, + "channelName": { + "type": "string", + "description": "Name of the Microsoft Teams channel.\n" + }, + "chatConfigurationArn": { + "type": "string", + "description": "ARN of the Microsoft Teams channel configuration.\n" + }, + "configurationName": { + "type": "string", + "description": "Name of the Microsoft Teams channel configuration.\n" + }, + "guardrailPolicyArns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set.\n" + }, + "iamRoleArn": { + "type": "string", + "description": "ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role.\n" + }, + "loggingLevel": { + "type": "string", + "description": "Logging levels include `ERROR`, `INFO`, or `NONE`.\n" + }, + "snsTopicArns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ARNs of the SNS topics that deliver notifications to AWS Chatbot.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "deprecationMessage": "Please use `tags` instead." + }, + "teamId": { + "type": "string", + "description": "ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console.\n" + }, + "teamName": { + "type": "string", + "description": "Name of the Microsoft Teams team.\n" + }, + "tenantId": { + "type": "string", + "description": "ID of the Microsoft Teams tenant.\n\nThe following arguments are optional:\n" + }, + "timeouts": { + "$ref": "#/types/aws:chatbot/TeamsChannelConfigurationTimeouts:TeamsChannelConfigurationTimeouts" + }, + "userAuthorizationRequired": { + "type": "boolean", + "description": "Enables use of a user role requirement in your chat configuration.\n" + } + }, + "required": [ + "channelId", + "channelName", + "chatConfigurationArn", + "configurationName", + "guardrailPolicyArns", + "iamRoleArn", + "loggingLevel", + "snsTopicArns", + "tagsAll", + "teamId", + "teamName", + "tenantId", + "userAuthorizationRequired" + ], + "inputProperties": { + "channelId": { + "type": "string", + "description": "ID of the Microsoft Teams channel.\n" + }, + "channelName": { + "type": "string", + "description": "Name of the Microsoft Teams channel.\n" + }, + "configurationName": { + "type": "string", + "description": "Name of the Microsoft Teams channel configuration.\n" + }, + "guardrailPolicyArns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set.\n" + }, + "iamRoleArn": { + "type": "string", + "description": "ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role.\n" + }, + "loggingLevel": { + "type": "string", + "description": "Logging levels include `ERROR`, `INFO`, or `NONE`.\n" + }, + "snsTopicArns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ARNs of the SNS topics that deliver notifications to AWS Chatbot.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource.\n" + }, + "teamId": { + "type": "string", + "description": "ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console.\n" + }, + "teamName": { + "type": "string", + "description": "Name of the Microsoft Teams team.\n" + }, + "tenantId": { + "type": "string", + "description": "ID of the Microsoft Teams tenant.\n\nThe following arguments are optional:\n" + }, + "timeouts": { + "$ref": "#/types/aws:chatbot/TeamsChannelConfigurationTimeouts:TeamsChannelConfigurationTimeouts" + }, + "userAuthorizationRequired": { + "type": "boolean", + "description": "Enables use of a user role requirement in your chat configuration.\n" + } + }, + "requiredInputs": [ + "channelId", + "configurationName", + "iamRoleArn", + "teamId", + "tenantId" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering TeamsChannelConfiguration resources.\n", + "properties": { + "channelId": { + "type": "string", + "description": "ID of the Microsoft Teams channel.\n" + }, + "channelName": { + "type": "string", + "description": "Name of the Microsoft Teams channel.\n" + }, + "chatConfigurationArn": { + "type": "string", + "description": "ARN of the Microsoft Teams channel configuration.\n" + }, + "configurationName": { + "type": "string", + "description": "Name of the Microsoft Teams channel configuration.\n" + }, + "guardrailPolicyArns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set.\n" + }, + "iamRoleArn": { + "type": "string", + "description": "ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role.\n" + }, + "loggingLevel": { + "type": "string", + "description": "Logging levels include `ERROR`, `INFO`, or `NONE`.\n" + }, + "snsTopicArns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ARNs of the SNS topics that deliver notifications to AWS Chatbot.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "deprecationMessage": "Please use `tags` instead." + }, + "teamId": { + "type": "string", + "description": "ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console.\n" + }, + "teamName": { + "type": "string", + "description": "Name of the Microsoft Teams team.\n" + }, + "tenantId": { + "type": "string", + "description": "ID of the Microsoft Teams tenant.\n\nThe following arguments are optional:\n" + }, + "timeouts": { + "$ref": "#/types/aws:chatbot/TeamsChannelConfigurationTimeouts:TeamsChannelConfigurationTimeouts" + }, + "userAuthorizationRequired": { + "type": "boolean", + "description": "Enables use of a user role requirement in your chat configuration.\n" + } + }, + "type": "object" + } + }, "aws:chime/sdkvoiceGlobalSettings:SdkvoiceGlobalSettings": { "description": "Resource for managing Amazon Chime SDK Voice Global Settings.\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.chime.SdkvoiceGlobalSettings(\"example\", {voiceConnector: {\n cdrBucket: \"example-bucket-name\",\n}});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.chime.SdkvoiceGlobalSettings(\"example\", voice_connector={\n \"cdr_bucket\": \"example-bucket-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.Chime.SdkvoiceGlobalSettings(\"example\", new()\n {\n VoiceConnector = new Aws.Chime.Inputs.SdkvoiceGlobalSettingsVoiceConnectorArgs\n {\n CdrBucket = \"example-bucket-name\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/chime\"\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 := chime.NewSdkvoiceGlobalSettings(ctx, \"example\", \u0026chime.SdkvoiceGlobalSettingsArgs{\n\t\t\tVoiceConnector: \u0026chime.SdkvoiceGlobalSettingsVoiceConnectorArgs{\n\t\t\t\tCdrBucket: pulumi.String(\"example-bucket-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.chime.SdkvoiceGlobalSettings;\nimport com.pulumi.aws.chime.SdkvoiceGlobalSettingsArgs;\nimport com.pulumi.aws.chime.inputs.SdkvoiceGlobalSettingsVoiceConnectorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 SdkvoiceGlobalSettings(\"example\", SdkvoiceGlobalSettingsArgs.builder()\n .voiceConnector(SdkvoiceGlobalSettingsVoiceConnectorArgs.builder()\n .cdrBucket(\"example-bucket-name\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:chime:SdkvoiceGlobalSettings\n properties:\n voiceConnector:\n cdrBucket: example-bucket-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import AWS Chime SDK Voice Global Settings using the `id` (AWS account ID). For example:\n\n```sh\n$ pulumi import aws:chime/sdkvoiceGlobalSettings:SdkvoiceGlobalSettings example 123456789012\n```\n", "properties": { @@ -210400,6 +211094,85 @@ "type": "object" } }, + "aws:datazone/glossary:Glossary": { + "description": "Resource for managing an AWS DataZone Glossary.\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 domainExecutionRole = new aws.iam.Role(\"domain_execution_role\", {\n name: \"example_name\",\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_name\",\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_name\",\n domainExecutionRole: domainExecutionRole.arn,\n});\nconst testSecurityGroup = new aws.ec2.SecurityGroup(\"test\", {name: \"example_name\"});\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 testGlossary = new aws.datazone.Glossary(\"test\", {\n description: \"description\",\n name: \"example_name\",\n owningProjectIdentifier: testProject.id,\n status: \"DISABLED\",\n domainIdentifier: testProject.domainIdentifier,\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_name\",\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_name\",\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_name\",\n domain_execution_role=domain_execution_role.arn)\ntest_security_group = aws.ec2.SecurityGroup(\"test\", name=\"example_name\")\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_glossary = aws.datazone.Glossary(\"test\",\n description=\"description\",\n name=\"example_name\",\n owning_project_identifier=test_project.id,\n status=\"DISABLED\",\n domain_identifier=test_project.domain_identifier)\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_name\",\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_name\",\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_name\",\n DomainExecutionRole = domainExecutionRole.Arn,\n });\n\n var testSecurityGroup = new Aws.Ec2.SecurityGroup(\"test\", new()\n {\n Name = \"example_name\",\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 testGlossary = new Aws.DataZone.Glossary(\"test\", new()\n {\n Description = \"description\",\n Name = \"example_name\",\n OwningProjectIdentifier = testProject.Id,\n Status = \"DISABLED\",\n DomainIdentifier = testProject.DomainIdentifier,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/datazone\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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_name\"),\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_name\"),\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_name\"),\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_name\"),\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.NewGlossary(ctx, \"test\", \u0026datazone.GlossaryArgs{\n\t\t\tDescription: pulumi.String(\"description\"),\n\t\t\tName: pulumi.String(\"example_name\"),\n\t\t\tOwningProjectIdentifier: testProject.ID(),\n\t\t\tStatus: pulumi.String(\"DISABLED\"),\n\t\t\tDomainIdentifier: testProject.DomainIdentifier,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.Glossary;\nimport com.pulumi.aws.datazone.GlossaryArgs;\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_name\")\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_name\")\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_name\")\n .domainExecutionRole(domainExecutionRole.arn())\n .build());\n\n var testSecurityGroup = new SecurityGroup(\"testSecurityGroup\", SecurityGroupArgs.builder()\n .name(\"example_name\")\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 testGlossary = new Glossary(\"testGlossary\", GlossaryArgs.builder()\n .description(\"description\")\n .name(\"example_name\")\n .owningProjectIdentifier(testProject.id())\n .status(\"DISABLED\")\n .domainIdentifier(testProject.domainIdentifier())\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_name\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_name\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_name\n domainExecutionRole: ${domainExecutionRole.arn}\n testSecurityGroup:\n type: aws:ec2:SecurityGroup\n name: test\n properties:\n name: example_name\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 testGlossary:\n type: aws:datazone:Glossary\n name: test\n properties:\n description: description\n name: example_name\n owningProjectIdentifier: ${testProject.id}\n status: DISABLED\n domainIdentifier: ${testProject.domainIdentifier}\n```\n\u003c!--End PulumiCodeChooser --\u003e\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.datazone.Glossary(\"test\", {\n description: \"description\",\n name: \"example_name\",\n owningProjectIdentifier: testAwsDatazoneProject.id,\n status: \"DISABLED\",\n domainIdentifier: testAwsDatazoneProject.domainIdentifier,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.datazone.Glossary(\"test\",\n description=\"description\",\n name=\"example_name\",\n owning_project_identifier=test_aws_datazone_project[\"id\"],\n status=\"DISABLED\",\n domain_identifier=test_aws_datazone_project[\"domainIdentifier\"])\n```\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.DataZone.Glossary(\"test\", new()\n {\n Description = \"description\",\n Name = \"example_name\",\n OwningProjectIdentifier = testAwsDatazoneProject.Id,\n Status = \"DISABLED\",\n DomainIdentifier = testAwsDatazoneProject.DomainIdentifier,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/datazone\"\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 := datazone.NewGlossary(ctx, \"test\", \u0026datazone.GlossaryArgs{\n\t\t\tDescription: pulumi.String(\"description\"),\n\t\t\tName: pulumi.String(\"example_name\"),\n\t\t\tOwningProjectIdentifier: pulumi.Any(testAwsDatazoneProject.Id),\n\t\t\tStatus: pulumi.String(\"DISABLED\"),\n\t\t\tDomainIdentifier: pulumi.Any(testAwsDatazoneProject.DomainIdentifier),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.datazone.Glossary;\nimport com.pulumi.aws.datazone.GlossaryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Glossary(\"test\", GlossaryArgs.builder()\n .description(\"description\")\n .name(\"example_name\")\n .owningProjectIdentifier(testAwsDatazoneProject.id())\n .status(\"DISABLED\")\n .domainIdentifier(testAwsDatazoneProject.domainIdentifier())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:datazone:Glossary\n properties:\n description: description\n name: example_name\n owningProjectIdentifier: ${testAwsDatazoneProject.id}\n status: DISABLED\n domainIdentifier: ${testAwsDatazoneProject.domainIdentifier}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import DataZone Glossary using the import Datazone Glossary using a comma-delimited string combining the domain id, glossary id, and the id of the project it's under. For example:\n\n```sh\n$ pulumi import aws:datazone/glossary:Glossary example domain-id,glossary-id,owning-project-identifier\n```\n", + "properties": { + "description": { + "type": "string", + "description": "Description of the glossary. Must have a length between 0 and 4096.\n" + }, + "domainIdentifier": { + "type": "string" + }, + "name": { + "type": "string", + "description": "Name of the glossary. Must have length between 1 and 256.\n" + }, + "owningProjectIdentifier": { + "type": "string", + "description": "ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$.\n\nThe following arguments are optional:\n" + }, + "status": { + "type": "string", + "description": "Status of business glossary. Valid values are DISABLED and ENABLED.\n" + } + }, + "required": [ + "domainIdentifier", + "name", + "owningProjectIdentifier" + ], + "inputProperties": { + "description": { + "type": "string", + "description": "Description of the glossary. Must have a length between 0 and 4096.\n" + }, + "domainIdentifier": { + "type": "string" + }, + "name": { + "type": "string", + "description": "Name of the glossary. Must have length between 1 and 256.\n" + }, + "owningProjectIdentifier": { + "type": "string", + "description": "ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$.\n\nThe following arguments are optional:\n" + }, + "status": { + "type": "string", + "description": "Status of business glossary. Valid values are DISABLED and ENABLED.\n" + } + }, + "requiredInputs": [ + "domainIdentifier", + "owningProjectIdentifier" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering Glossary resources.\n", + "properties": { + "description": { + "type": "string", + "description": "Description of the glossary. Must have a length between 0 and 4096.\n" + }, + "domainIdentifier": { + "type": "string" + }, + "name": { + "type": "string", + "description": "Name of the glossary. Must have length between 1 and 256.\n" + }, + "owningProjectIdentifier": { + "type": "string", + "description": "ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$.\n\nThe following arguments are optional:\n" + }, + "status": { + "type": "string", + "description": "Status of business glossary. Valid values are DISABLED and ENABLED.\n" + } + }, + "type": "object" + } + }, "aws:datazone/project:Project": { "description": "Resource for managing an AWS DataZone Project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n test:\n type: aws:datazone:Project\n properties:\n domainId: ${testAwsDatazoneDomain.id}\n glossaryTerms:\n - 2N8w6XJCwZf\n name: name\n description: desc\n skipDeletionCheck: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\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.datazone.Project(\"test\", {\n domainIdentifier: testAwsDatazoneDomain.id,\n name: \"name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.datazone.Project(\"test\",\n domain_identifier=test_aws_datazone_domain[\"id\"],\n name=\"name\")\n```\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.DataZone.Project(\"test\", new()\n {\n DomainIdentifier = testAwsDatazoneDomain.Id,\n Name = \"name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/datazone\"\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 := datazone.NewProject(ctx, \"test\", \u0026datazone.ProjectArgs{\n\t\t\tDomainIdentifier: pulumi.Any(testAwsDatazoneDomain.Id),\n\t\t\tName: pulumi.String(\"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.datazone.Project;\nimport com.pulumi.aws.datazone.ProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Project(\"test\", ProjectArgs.builder()\n .domainIdentifier(testAwsDatazoneDomain.id())\n .name(\"name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:datazone:Project\n properties:\n domainIdentifier: ${testAwsDatazoneDomain.id}\n name: name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import DataZone Project using the `id`. For example:\n\n```sh\n$ pulumi import aws:datazone/project:Project example projectid123\n```\n", "properties": { @@ -234925,7 +235698,7 @@ }, "ipv6NetmaskLength": { "type": "integer", - "description": "Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`.\n" + "description": "Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4.\n" }, "mainRouteTableId": { "type": "string", @@ -235017,7 +235790,7 @@ }, "ipv6NetmaskLength": { "type": "integer", - "description": "Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`.\n" + "description": "Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4.\n" }, "tags": { "type": "object", @@ -235103,7 +235876,7 @@ }, "ipv6NetmaskLength": { "type": "integer", - "description": "Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`.\n" + "description": "Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4.\n" }, "mainRouteTableId": { "type": "string", @@ -236958,6 +237731,7 @@ "cidr", "ipamPoolAllocationId", "ipamPoolId", + "netmaskLength", "resourceId", "resourceOwner", "resourceType" @@ -237588,17 +238362,25 @@ "aws:ec2/vpcIpv6CidrBlockAssociation:VpcIpv6CidrBlockAssociation": { "description": "Provides a resource to associate additional IPv6 CIDR blocks with a VPC.\n\nThe `aws.ec2.VpcIpv6CidrBlockAssociation` resource allows IPv6 CIDR blocks to be added to the VPC.\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.ec2.Vpc(\"test\", {cidrBlock: \"10.0.0.0/16\"});\nconst testVpcIpv6CidrBlockAssociation = new aws.ec2.VpcIpv6CidrBlockAssociation(\"test\", {\n ipv6IpamPoolId: testAwsVpcIpamPool.id,\n vpcId: test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.ec2.Vpc(\"test\", cidr_block=\"10.0.0.0/16\")\ntest_vpc_ipv6_cidr_block_association = aws.ec2.VpcIpv6CidrBlockAssociation(\"test\",\n ipv6_ipam_pool_id=test_aws_vpc_ipam_pool[\"id\"],\n vpc_id=test.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 test = new Aws.Ec2.Vpc(\"test\", new()\n {\n CidrBlock = \"10.0.0.0/16\",\n });\n\n var testVpcIpv6CidrBlockAssociation = new Aws.Ec2.VpcIpv6CidrBlockAssociation(\"test\", new()\n {\n Ipv6IpamPoolId = testAwsVpcIpamPool.Id,\n VpcId = test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\ttest, err := ec2.NewVpc(ctx, \"test\", \u0026ec2.VpcArgs{\n\t\t\tCidrBlock: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ec2.NewVpcIpv6CidrBlockAssociation(ctx, \"test\", \u0026ec2.VpcIpv6CidrBlockAssociationArgs{\n\t\t\tIpv6IpamPoolId: pulumi.Any(testAwsVpcIpamPool.Id),\n\t\t\tVpcId: test.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.Vpc;\nimport com.pulumi.aws.ec2.VpcArgs;\nimport com.pulumi.aws.ec2.VpcIpv6CidrBlockAssociation;\nimport com.pulumi.aws.ec2.VpcIpv6CidrBlockAssociationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Vpc(\"test\", VpcArgs.builder()\n .cidrBlock(\"10.0.0.0/16\")\n .build());\n\n var testVpcIpv6CidrBlockAssociation = new VpcIpv6CidrBlockAssociation(\"testVpcIpv6CidrBlockAssociation\", VpcIpv6CidrBlockAssociationArgs.builder()\n .ipv6IpamPoolId(testAwsVpcIpamPool.id())\n .vpcId(test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:ec2:Vpc\n properties:\n cidrBlock: 10.0.0.0/16\n testVpcIpv6CidrBlockAssociation:\n type: aws:ec2:VpcIpv6CidrBlockAssociation\n name: test\n properties:\n ipv6IpamPoolId: ${testAwsVpcIpamPool.id}\n vpcId: ${test.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_vpc_ipv6_cidr_block_association` using the VPC CIDR Association ID. For example:\n\n```sh\n$ pulumi import aws:ec2/vpcIpv6CidrBlockAssociation:VpcIpv6CidrBlockAssociation example vpc-cidr-assoc-xxxxxxxx\n```\n", "properties": { + "assignGeneratedIpv6CidrBlock": { + "type": "boolean", + "description": "Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`.\n" + }, "ipv6CidrBlock": { "type": "string", - "description": "The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set.\n" + "description": "The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`.\n" }, "ipv6IpamPoolId": { "type": "string", - "description": "The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts.\n" + "description": "- (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`.\n" }, "ipv6NetmaskLength": { "type": "integer", - "description": "The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required\n" + "description": "The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`.\n" + }, + "ipv6Pool": { + "type": "string", + "description": "The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`.\n" }, "vpcId": { "type": "string", @@ -237606,24 +238388,35 @@ } }, "required": [ + "assignGeneratedIpv6CidrBlock", "ipv6CidrBlock", - "ipv6IpamPoolId", + "ipv6Pool", "vpcId" ], "inputProperties": { + "assignGeneratedIpv6CidrBlock": { + "type": "boolean", + "description": "Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`.\n", + "willReplaceOnChanges": true + }, "ipv6CidrBlock": { "type": "string", - "description": "The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set.\n", + "description": "The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`.\n", "willReplaceOnChanges": true }, "ipv6IpamPoolId": { "type": "string", - "description": "The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts.\n", + "description": "- (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`.\n", "willReplaceOnChanges": true }, "ipv6NetmaskLength": { "type": "integer", - "description": "The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required\n", + "description": "The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`.\n", + "willReplaceOnChanges": true + }, + "ipv6Pool": { + "type": "string", + "description": "The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`.\n", "willReplaceOnChanges": true }, "vpcId": { @@ -237633,25 +238426,34 @@ } }, "requiredInputs": [ - "ipv6IpamPoolId", "vpcId" ], "stateInputs": { "description": "Input properties used for looking up and filtering VpcIpv6CidrBlockAssociation resources.\n", "properties": { + "assignGeneratedIpv6CidrBlock": { + "type": "boolean", + "description": "Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`.\n", + "willReplaceOnChanges": true + }, "ipv6CidrBlock": { "type": "string", - "description": "The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set.\n", + "description": "The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`.\n", "willReplaceOnChanges": true }, "ipv6IpamPoolId": { "type": "string", - "description": "The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts.\n", + "description": "- (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`.\n", "willReplaceOnChanges": true }, "ipv6NetmaskLength": { "type": "integer", - "description": "The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required\n", + "description": "The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`.\n", + "willReplaceOnChanges": true + }, + "ipv6Pool": { + "type": "string", + "description": "The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`.\n", "willReplaceOnChanges": true }, "vpcId": { @@ -242604,6 +243406,170 @@ "type": "object" } }, + "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/v6/go/aws/ecr\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.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", + "items": { + "type": "string" + }, + "description": "Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`.\n" + }, + "customRoleArn": { + "type": "string", + "description": "A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption.\n" + }, + "description": { + "type": "string", + "description": "The description for this template.\n" + }, + "encryptionConfigurations": { + "type": "array", + "items": { + "$ref": "#/types/aws:ecr/RepositoryCreationTemplateEncryptionConfiguration:RepositoryCreationTemplateEncryptionConfiguration" + }, + "description": "Encryption configuration for any created repositories. See below for schema.\n" + }, + "imageTagMutability": { + "type": "string", + "description": "The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`.\n" + }, + "lifecyclePolicy": { + "type": "string", + "description": "The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument.\n" + }, + "prefix": { + "type": "string", + "description": "The repository name prefix to match against.\n" + }, + "registryId": { + "type": "string", + "description": "The registry ID the repository creation template applies to.\n" + }, + "repositoryPolicy": { + "type": "string" + }, + "resourceTags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags to assign to any created repositories.\n" + } + }, + "required": [ + "appliedFors", + "prefix", + "registryId" + ], + "inputProperties": { + "appliedFors": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`.\n" + }, + "customRoleArn": { + "type": "string", + "description": "A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption.\n" + }, + "description": { + "type": "string", + "description": "The description for this template.\n" + }, + "encryptionConfigurations": { + "type": "array", + "items": { + "$ref": "#/types/aws:ecr/RepositoryCreationTemplateEncryptionConfiguration:RepositoryCreationTemplateEncryptionConfiguration" + }, + "description": "Encryption configuration for any created repositories. See below for schema.\n" + }, + "imageTagMutability": { + "type": "string", + "description": "The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`.\n" + }, + "lifecyclePolicy": { + "type": "string", + "description": "The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument.\n" + }, + "prefix": { + "type": "string", + "description": "The repository name prefix to match against.\n", + "willReplaceOnChanges": true + }, + "repositoryPolicy": { + "type": "string" + }, + "resourceTags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags to assign to any created repositories.\n" + } + }, + "requiredInputs": [ + "appliedFors", + "prefix" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering RepositoryCreationTemplate resources.\n", + "properties": { + "appliedFors": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`.\n" + }, + "customRoleArn": { + "type": "string", + "description": "A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption.\n" + }, + "description": { + "type": "string", + "description": "The description for this template.\n" + }, + "encryptionConfigurations": { + "type": "array", + "items": { + "$ref": "#/types/aws:ecr/RepositoryCreationTemplateEncryptionConfiguration:RepositoryCreationTemplateEncryptionConfiguration" + }, + "description": "Encryption configuration for any created repositories. See below for schema.\n" + }, + "imageTagMutability": { + "type": "string", + "description": "The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`.\n" + }, + "lifecyclePolicy": { + "type": "string", + "description": "The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument.\n" + }, + "prefix": { + "type": "string", + "description": "The repository name prefix to match against.\n", + "willReplaceOnChanges": true + }, + "registryId": { + "type": "string", + "description": "The registry ID the repository creation template applies to.\n" + }, + "repositoryPolicy": { + "type": "string" + }, + "resourceTags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags to assign to any created repositories.\n" + } + }, + "type": "object" + } + }, "aws:ecr/repositoryPolicy:RepositoryPolicy": { "description": "Provides an Elastic Container Registry Repository Policy.\n\nNote that currently only one policy may be applied to a repository.\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 exampleRepository = new aws.ecr.Repository(\"example\", {name: \"example-repo\"});\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 exampleRepositoryPolicy = new aws.ecr.RepositoryPolicy(\"example\", {\n repository: exampleRepository.name,\n policy: example.then(example =\u003e example.json),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_repository = aws.ecr.Repository(\"example\", name=\"example-repo\")\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_policy = aws.ecr.RepositoryPolicy(\"example\",\n repository=example_repository.name,\n policy=example.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 exampleRepository = new Aws.Ecr.Repository(\"example\", new()\n {\n Name = \"example-repo\",\n });\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 exampleRepositoryPolicy = new Aws.Ecr.RepositoryPolicy(\"example\", new()\n {\n Repository = exampleRepository.Name,\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/v6/go/aws/ecr\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\texampleRepository, 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\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.NewRepositoryPolicy(ctx, \"example\", \u0026ecr.RepositoryPolicyArgs{\n\t\t\tRepository: exampleRepository.Name,\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.aws.ecr.Repository;\nimport com.pulumi.aws.ecr.RepositoryArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.ecr.RepositoryPolicy;\nimport com.pulumi.aws.ecr.RepositoryPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleRepository = new Repository(\"exampleRepository\", RepositoryArgs.builder()\n .name(\"example-repo\")\n .build());\n\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 exampleRepositoryPolicy = new RepositoryPolicy(\"exampleRepositoryPolicy\", RepositoryPolicyArgs.builder()\n .repository(exampleRepository.name())\n .policy(example.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleRepository:\n type: aws:ecr:Repository\n name: example\n properties:\n name: example-repo\n exampleRepositoryPolicy:\n type: aws:ecr:RepositoryPolicy\n name: example\n properties:\n repository: ${exampleRepository.name}\n policy: ${example.json}\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 ECR Repository Policy using the repository name. For example:\n\n```sh\n$ pulumi import aws:ecr/repositoryPolicy:RepositoryPolicy example example\n```\n", "properties": { @@ -245690,6 +246656,10 @@ "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", "deprecationMessage": "Please use `tags` instead." }, + "upgradePolicy": { + "$ref": "#/types/aws:eks/ClusterUpgradePolicy:ClusterUpgradePolicy", + "description": "Configuration block for the support policy to use for the cluster. See upgrade_policy for details.\n" + }, "version": { "type": "string", "description": "Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS.\n" @@ -245714,6 +246684,7 @@ "roleArn", "status", "tagsAll", + "upgradePolicy", "version", "vpcConfig" ], @@ -245769,6 +246740,10 @@ }, "description": "Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" }, + "upgradePolicy": { + "$ref": "#/types/aws:eks/ClusterUpgradePolicy:ClusterUpgradePolicy", + "description": "Configuration block for the support policy to use for the cluster. See upgrade_policy for details.\n" + }, "version": { "type": "string", "description": "Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS.\n" @@ -245885,6 +246860,10 @@ "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", "deprecationMessage": "Please use `tags` instead." }, + "upgradePolicy": { + "$ref": "#/types/aws:eks/ClusterUpgradePolicy:ClusterUpgradePolicy", + "description": "Configuration block for the support policy to use for the cluster. See upgrade_policy for details.\n" + }, "version": { "type": "string", "description": "Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS.\n" @@ -248941,7 +249920,7 @@ } }, "aws:elasticache/userGroupAssociation:UserGroupAssociation": { - "description": "Associate an existing ElastiCache user and an existing user group.\n\n\u003e **NOTE:** The provider will detect changes in the `aws.elasticache.UserGroup` since `aws.elasticache.UserGroupAssociation` changes the user IDs associated with the user group. You can ignore these changes with the `ignore_changes` option as shown in the example.\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 _default = new aws.elasticache.User(\"default\", {\n userId: \"defaultUserID\",\n userName: \"default\",\n accessString: \"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\",\n engine: \"REDIS\",\n passwords: [\"password123456789\"],\n});\nconst example = new aws.elasticache.UserGroup(\"example\", {\n engine: \"REDIS\",\n userGroupId: \"userGroupId\",\n userIds: [_default.userId],\n});\nconst exampleUser = new aws.elasticache.User(\"example\", {\n userId: \"exampleUserID\",\n userName: \"exampleuser\",\n accessString: \"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\",\n engine: \"REDIS\",\n passwords: [\"password123456789\"],\n});\nconst exampleUserGroupAssociation = new aws.elasticache.UserGroupAssociation(\"example\", {\n userGroupId: example.userGroupId,\n userId: exampleUser.userId,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ndefault = aws.elasticache.User(\"default\",\n user_id=\"defaultUserID\",\n user_name=\"default\",\n access_string=\"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\",\n engine=\"REDIS\",\n passwords=[\"password123456789\"])\nexample = aws.elasticache.UserGroup(\"example\",\n engine=\"REDIS\",\n user_group_id=\"userGroupId\",\n user_ids=[default.user_id])\nexample_user = aws.elasticache.User(\"example\",\n user_id=\"exampleUserID\",\n user_name=\"exampleuser\",\n access_string=\"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\",\n engine=\"REDIS\",\n passwords=[\"password123456789\"])\nexample_user_group_association = aws.elasticache.UserGroupAssociation(\"example\",\n user_group_id=example.user_group_id,\n user_id=example_user.user_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 @default = new Aws.ElastiCache.User(\"default\", new()\n {\n UserId = \"defaultUserID\",\n UserName = \"default\",\n AccessString = \"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\",\n Engine = \"REDIS\",\n Passwords = new[]\n {\n \"password123456789\",\n },\n });\n\n var example = new Aws.ElastiCache.UserGroup(\"example\", new()\n {\n Engine = \"REDIS\",\n UserGroupId = \"userGroupId\",\n UserIds = new[]\n {\n @default.UserId,\n },\n });\n\n var exampleUser = new Aws.ElastiCache.User(\"example\", new()\n {\n UserId = \"exampleUserID\",\n UserName = \"exampleuser\",\n AccessString = \"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\",\n Engine = \"REDIS\",\n Passwords = new[]\n {\n \"password123456789\",\n },\n });\n\n var exampleUserGroupAssociation = new Aws.ElastiCache.UserGroupAssociation(\"example\", new()\n {\n UserGroupId = example.UserGroupId,\n UserId = exampleUser.UserId,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\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 := elasticache.NewUser(ctx, \"default\", \u0026elasticache.UserArgs{\n\t\t\tUserId: pulumi.String(\"defaultUserID\"),\n\t\t\tUserName: pulumi.String(\"default\"),\n\t\t\tAccessString: pulumi.String(\"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\"),\n\t\t\tEngine: pulumi.String(\"REDIS\"),\n\t\t\tPasswords: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"password123456789\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewUserGroup(ctx, \"example\", \u0026elasticache.UserGroupArgs{\n\t\t\tEngine: pulumi.String(\"REDIS\"),\n\t\t\tUserGroupId: pulumi.String(\"userGroupId\"),\n\t\t\tUserIds: pulumi.StringArray{\n\t\t\t\t_default.UserId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleUser, err := elasticache.NewUser(ctx, \"example\", \u0026elasticache.UserArgs{\n\t\t\tUserId: pulumi.String(\"exampleUserID\"),\n\t\t\tUserName: pulumi.String(\"exampleuser\"),\n\t\t\tAccessString: pulumi.String(\"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\"),\n\t\t\tEngine: pulumi.String(\"REDIS\"),\n\t\t\tPasswords: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"password123456789\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewUserGroupAssociation(ctx, \"example\", \u0026elasticache.UserGroupAssociationArgs{\n\t\t\tUserGroupId: example.UserGroupId,\n\t\t\tUserId: exampleUser.UserId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.User;\nimport com.pulumi.aws.elasticache.UserArgs;\nimport com.pulumi.aws.elasticache.UserGroup;\nimport com.pulumi.aws.elasticache.UserGroupArgs;\nimport com.pulumi.aws.elasticache.UserGroupAssociation;\nimport com.pulumi.aws.elasticache.UserGroupAssociationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new User(\"default\", UserArgs.builder()\n .userId(\"defaultUserID\")\n .userName(\"default\")\n .accessString(\"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\")\n .engine(\"REDIS\")\n .passwords(\"password123456789\")\n .build());\n\n var example = new UserGroup(\"example\", UserGroupArgs.builder()\n .engine(\"REDIS\")\n .userGroupId(\"userGroupId\")\n .userIds(default_.userId())\n .build());\n\n var exampleUser = new User(\"exampleUser\", UserArgs.builder()\n .userId(\"exampleUserID\")\n .userName(\"exampleuser\")\n .accessString(\"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\")\n .engine(\"REDIS\")\n .passwords(\"password123456789\")\n .build());\n\n var exampleUserGroupAssociation = new UserGroupAssociation(\"exampleUserGroupAssociation\", UserGroupAssociationArgs.builder()\n .userGroupId(example.userGroupId())\n .userId(exampleUser.userId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: aws:elasticache:User\n properties:\n userId: defaultUserID\n userName: default\n accessString: on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\n engine: REDIS\n passwords:\n - password123456789\n example:\n type: aws:elasticache:UserGroup\n properties:\n engine: REDIS\n userGroupId: userGroupId\n userIds:\n - ${default.userId}\n exampleUser:\n type: aws:elasticache:User\n name: example\n properties:\n userId: exampleUserID\n userName: exampleuser\n accessString: on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\n engine: REDIS\n passwords:\n - password123456789\n exampleUserGroupAssociation:\n type: aws:elasticache:UserGroupAssociation\n name: example\n properties:\n userGroupId: ${example.userGroupId}\n userId: ${exampleUser.userId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import ElastiCache user group associations using the `user_group_id` and `user_id`. For example:\n\n```sh\n$ pulumi import aws:elasticache/userGroupAssociation:UserGroupAssociation example userGoupId1,userId\n```\n", + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst _default = new aws.elasticache.User(\"default\", {\n userId: \"defaultUserID\",\n userName: \"default\",\n accessString: \"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\",\n engine: \"REDIS\",\n passwords: [\"password123456789\"],\n});\nconst example = new aws.elasticache.UserGroup(\"example\", {\n engine: \"REDIS\",\n userGroupId: \"userGroupId\",\n userIds: [_default.userId],\n});\nconst exampleUser = new aws.elasticache.User(\"example\", {\n userId: \"exampleUserID\",\n userName: \"exampleuser\",\n accessString: \"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\",\n engine: \"REDIS\",\n passwords: [\"password123456789\"],\n});\nconst exampleUserGroupAssociation = new aws.elasticache.UserGroupAssociation(\"example\", {\n userGroupId: example.userGroupId,\n userId: exampleUser.userId,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ndefault = aws.elasticache.User(\"default\",\n user_id=\"defaultUserID\",\n user_name=\"default\",\n access_string=\"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\",\n engine=\"REDIS\",\n passwords=[\"password123456789\"])\nexample = aws.elasticache.UserGroup(\"example\",\n engine=\"REDIS\",\n user_group_id=\"userGroupId\",\n user_ids=[default.user_id])\nexample_user = aws.elasticache.User(\"example\",\n user_id=\"exampleUserID\",\n user_name=\"exampleuser\",\n access_string=\"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\",\n engine=\"REDIS\",\n passwords=[\"password123456789\"])\nexample_user_group_association = aws.elasticache.UserGroupAssociation(\"example\",\n user_group_id=example.user_group_id,\n user_id=example_user.user_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 @default = new Aws.ElastiCache.User(\"default\", new()\n {\n UserId = \"defaultUserID\",\n UserName = \"default\",\n AccessString = \"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\",\n Engine = \"REDIS\",\n Passwords = new[]\n {\n \"password123456789\",\n },\n });\n\n var example = new Aws.ElastiCache.UserGroup(\"example\", new()\n {\n Engine = \"REDIS\",\n UserGroupId = \"userGroupId\",\n UserIds = new[]\n {\n @default.UserId,\n },\n });\n\n var exampleUser = new Aws.ElastiCache.User(\"example\", new()\n {\n UserId = \"exampleUserID\",\n UserName = \"exampleuser\",\n AccessString = \"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\",\n Engine = \"REDIS\",\n Passwords = new[]\n {\n \"password123456789\",\n },\n });\n\n var exampleUserGroupAssociation = new Aws.ElastiCache.UserGroupAssociation(\"example\", new()\n {\n UserGroupId = example.UserGroupId,\n UserId = exampleUser.UserId,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\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 := elasticache.NewUser(ctx, \"default\", \u0026elasticache.UserArgs{\n\t\t\tUserId: pulumi.String(\"defaultUserID\"),\n\t\t\tUserName: pulumi.String(\"default\"),\n\t\t\tAccessString: pulumi.String(\"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\"),\n\t\t\tEngine: pulumi.String(\"REDIS\"),\n\t\t\tPasswords: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"password123456789\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewUserGroup(ctx, \"example\", \u0026elasticache.UserGroupArgs{\n\t\t\tEngine: pulumi.String(\"REDIS\"),\n\t\t\tUserGroupId: pulumi.String(\"userGroupId\"),\n\t\t\tUserIds: pulumi.StringArray{\n\t\t\t\t_default.UserId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleUser, err := elasticache.NewUser(ctx, \"example\", \u0026elasticache.UserArgs{\n\t\t\tUserId: pulumi.String(\"exampleUserID\"),\n\t\t\tUserName: pulumi.String(\"exampleuser\"),\n\t\t\tAccessString: pulumi.String(\"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\"),\n\t\t\tEngine: pulumi.String(\"REDIS\"),\n\t\t\tPasswords: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"password123456789\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewUserGroupAssociation(ctx, \"example\", \u0026elasticache.UserGroupAssociationArgs{\n\t\t\tUserGroupId: example.UserGroupId,\n\t\t\tUserId: exampleUser.UserId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.User;\nimport com.pulumi.aws.elasticache.UserArgs;\nimport com.pulumi.aws.elasticache.UserGroup;\nimport com.pulumi.aws.elasticache.UserGroupArgs;\nimport com.pulumi.aws.elasticache.UserGroupAssociation;\nimport com.pulumi.aws.elasticache.UserGroupAssociationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new User(\"default\", UserArgs.builder()\n .userId(\"defaultUserID\")\n .userName(\"default\")\n .accessString(\"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\")\n .engine(\"REDIS\")\n .passwords(\"password123456789\")\n .build());\n\n var example = new UserGroup(\"example\", UserGroupArgs.builder()\n .engine(\"REDIS\")\n .userGroupId(\"userGroupId\")\n .userIds(default_.userId())\n .build());\n\n var exampleUser = new User(\"exampleUser\", UserArgs.builder()\n .userId(\"exampleUserID\")\n .userName(\"exampleuser\")\n .accessString(\"on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\")\n .engine(\"REDIS\")\n .passwords(\"password123456789\")\n .build());\n\n var exampleUserGroupAssociation = new UserGroupAssociation(\"exampleUserGroupAssociation\", UserGroupAssociationArgs.builder()\n .userGroupId(example.userGroupId())\n .userId(exampleUser.userId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: aws:elasticache:User\n properties:\n userId: defaultUserID\n userName: default\n accessString: on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\n engine: REDIS\n passwords:\n - password123456789\n example:\n type: aws:elasticache:UserGroup\n properties:\n engine: REDIS\n userGroupId: userGroupId\n userIds:\n - ${default.userId}\n exampleUser:\n type: aws:elasticache:User\n name: example\n properties:\n userId: exampleUserID\n userName: exampleuser\n accessString: on ~app::* -@all +@read +@hash +@bitmap +@geo -setbit -bitfield -hset -hsetnx -hmset -hincrby -hincrbyfloat -hdel -bitop -geoadd -georadius -georadiusbymember\n engine: REDIS\n passwords:\n - password123456789\n exampleUserGroupAssociation:\n type: aws:elasticache:UserGroupAssociation\n name: example\n properties:\n userGroupId: ${example.userGroupId}\n userId: ${exampleUser.userId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import ElastiCache user group associations using the `user_group_id` and `user_id`. For example:\n\n```sh\n$ pulumi import aws:elasticache/userGroupAssociation:UserGroupAssociation example userGoupId1,userId\n```\n", "properties": { "userGroupId": { "type": "string", @@ -311902,7 +312881,7 @@ } }, "aws:pipes/pipe:Pipe": { - "description": "Resource for managing an AWS EventBridge Pipes Pipe.\n\nYou can find out more about EventBridge Pipes in the [User Guide](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html).\n\nEventBridge Pipes are very configurable, and may require IAM permissions to work correctly. More information on the configuration options and IAM permissions can be found in the [User Guide](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html).\n\n\u003e **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical.\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 main = aws.getCallerIdentity({});\nconst example = new aws.iam.Role(\"example\", {assumeRolePolicy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: {\n Effect: \"Allow\",\n Action: \"sts:AssumeRole\",\n Principal: {\n Service: \"pipes.amazonaws.com\",\n },\n Condition: {\n StringEquals: {\n \"aws:SourceAccount\": main.then(main =\u003e main.accountId),\n },\n },\n },\n})});\nconst sourceQueue = new aws.sqs.Queue(\"source\", {});\nconst source = new aws.iam.RolePolicy(\"source\", {\n role: example.id,\n policy: pulumi.jsonStringify({\n Version: \"2012-10-17\",\n Statement: [{\n Effect: \"Allow\",\n Action: [\n \"sqs:DeleteMessage\",\n \"sqs:GetQueueAttributes\",\n \"sqs:ReceiveMessage\",\n ],\n Resource: [sourceQueue.arn],\n }],\n }),\n});\nconst targetQueue = new aws.sqs.Queue(\"target\", {});\nconst target = new aws.iam.RolePolicy(\"target\", {\n role: example.id,\n policy: pulumi.jsonStringify({\n Version: \"2012-10-17\",\n Statement: [{\n Effect: \"Allow\",\n Action: [\"sqs:SendMessage\"],\n Resource: [targetQueue.arn],\n }],\n }),\n});\nconst examplePipe = new aws.pipes.Pipe(\"example\", {\n name: \"example-pipe\",\n roleArn: example.arn,\n source: sourceQueue.arn,\n target: targetQueue.arn,\n}, {\n dependsOn: [\n source,\n target,\n ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nmain = aws.get_caller_identity()\nexample = aws.iam.Role(\"example\", assume_role_policy=json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": {\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"pipes.amazonaws.com\",\n },\n \"Condition\": {\n \"StringEquals\": {\n \"aws:SourceAccount\": main.account_id,\n },\n },\n },\n}))\nsource_queue = aws.sqs.Queue(\"source\")\nsource = aws.iam.RolePolicy(\"source\",\n role=example.id,\n policy=pulumi.Output.json_dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"sqs:DeleteMessage\",\n \"sqs:GetQueueAttributes\",\n \"sqs:ReceiveMessage\",\n ],\n \"Resource\": [source_queue.arn],\n }],\n }))\ntarget_queue = aws.sqs.Queue(\"target\")\ntarget = aws.iam.RolePolicy(\"target\",\n role=example.id,\n policy=pulumi.Output.json_dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Action\": [\"sqs:SendMessage\"],\n \"Resource\": [target_queue.arn],\n }],\n }))\nexample_pipe = aws.pipes.Pipe(\"example\",\n name=\"example-pipe\",\n role_arn=example.arn,\n source=source_queue.arn,\n target=target_queue.arn,\n opts = pulumi.ResourceOptions(depends_on=[\n source,\n target,\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 main = Aws.GetCallerIdentity.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 Dictionary\u003cstring, object?\u003e\n {\n [\"Effect\"] = \"Allow\",\n [\"Action\"] = \"sts:AssumeRole\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Service\"] = \"pipes.amazonaws.com\",\n },\n [\"Condition\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"StringEquals\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"aws:SourceAccount\"] = main.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.AccountId),\n },\n },\n },\n }),\n });\n\n var sourceQueue = new Aws.Sqs.Queue(\"source\");\n\n var source = new Aws.Iam.RolePolicy(\"source\", new()\n {\n Role = example.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 [\"Action\"] = new[]\n {\n \"sqs:DeleteMessage\",\n \"sqs:GetQueueAttributes\",\n \"sqs:ReceiveMessage\",\n },\n [\"Resource\"] = new[]\n {\n sourceQueue.Arn,\n },\n },\n },\n })),\n });\n\n var targetQueue = new Aws.Sqs.Queue(\"target\");\n\n var target = new Aws.Iam.RolePolicy(\"target\", new()\n {\n Role = example.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 [\"Action\"] = new[]\n {\n \"sqs:SendMessage\",\n },\n [\"Resource\"] = new[]\n {\n targetQueue.Arn,\n },\n },\n },\n })),\n });\n\n var examplePipe = new Aws.Pipes.Pipe(\"example\", new()\n {\n Name = \"example-pipe\",\n RoleArn = example.Arn,\n Source = sourceQueue.Arn,\n Target = targetQueue.Arn,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n source,\n target,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/pipes\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\tmain, err := aws.GetCallerIdentity(ctx, nil, 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\t\"Effect\": \"Allow\",\n\t\t\t\t\"Action\": \"sts:AssumeRole\",\n\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\"Service\": \"pipes.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\t\"Condition\": map[string]interface{}{\n\t\t\t\t\t\"StringEquals\": map[string]interface{}{\n\t\t\t\t\t\t\"aws:SourceAccount\": main.AccountId,\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\tsourceQueue, err := sqs.NewQueue(ctx, \"source\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := iam.NewRolePolicy(ctx, \"source\", \u0026iam.RolePolicyArgs{\n\t\t\tRole: example.ID(),\n\t\t\tPolicy: sourceQueue.Arn.ApplyT(func(arn string) (pulumi.String, error) {\n\t\t\t\tvar _zero pulumi.String\n\t\t\t\ttmpJSON1, 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\"Action\": []string{\n\t\t\t\t\t\t\t\t\"sqs:DeleteMessage\",\n\t\t\t\t\t\t\t\t\"sqs:GetQueueAttributes\",\n\t\t\t\t\t\t\t\t\"sqs:ReceiveMessage\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\t\tarn,\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\tjson1 := string(tmpJSON1)\n\t\t\t\treturn pulumi.String(json1), 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\ttargetQueue, err := sqs.NewQueue(ctx, \"target\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttarget, err := iam.NewRolePolicy(ctx, \"target\", \u0026iam.RolePolicyArgs{\n\t\t\tRole: example.ID(),\n\t\t\tPolicy: targetQueue.Arn.ApplyT(func(arn string) (pulumi.String, error) {\n\t\t\t\tvar _zero pulumi.String\n\t\t\t\ttmpJSON2, 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\"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\": []string{\n\t\t\t\t\t\t\t\tarn,\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\tjson2 := string(tmpJSON2)\n\t\t\t\treturn pulumi.String(json2), 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 = pipes.NewPipe(ctx, \"example\", \u0026pipes.PipeArgs{\n\t\t\tName: pulumi.String(\"example-pipe\"),\n\t\t\tRoleArn: example.Arn,\n\t\t\tSource: sourceQueue.Arn,\n\t\t\tTarget: targetQueue.Arn,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsource,\n\t\t\ttarget,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.sqs.Queue;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.pipes.Pipe;\nimport com.pulumi.aws.pipes.PipeArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 main = AwsFunctions.getCallerIdentity();\n\n var example = new Role(\"example\", RoleArgs.builder()\n .assumeRolePolicy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Action\", \"sts:AssumeRole\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"Service\", \"pipes.amazonaws.com\")\n )),\n jsonProperty(\"Condition\", jsonObject(\n jsonProperty(\"StringEquals\", jsonObject(\n jsonProperty(\"aws:SourceAccount\", main.applyValue(getCallerIdentityResult -\u003e getCallerIdentityResult.accountId()))\n ))\n ))\n ))\n )))\n .build());\n\n var sourceQueue = new Queue(\"sourceQueue\");\n\n var source = new RolePolicy(\"source\", RolePolicyArgs.builder()\n .role(example.id())\n .policy(sourceQueue.arn().applyValue(arn -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Action\", jsonArray(\n \"sqs:DeleteMessage\", \n \"sqs:GetQueueAttributes\", \n \"sqs:ReceiveMessage\"\n )),\n jsonProperty(\"Resource\", jsonArray(arn))\n )))\n ))))\n .build());\n\n var targetQueue = new Queue(\"targetQueue\");\n\n var target = new RolePolicy(\"target\", RolePolicyArgs.builder()\n .role(example.id())\n .policy(targetQueue.arn().applyValue(arn -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Action\", jsonArray(\"sqs:SendMessage\")),\n jsonProperty(\"Resource\", jsonArray(arn))\n )))\n ))))\n .build());\n\n var examplePipe = new Pipe(\"examplePipe\", PipeArgs.builder()\n .name(\"example-pipe\")\n .roleArn(example.arn())\n .source(sourceQueue.arn())\n .target(targetQueue.arn())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n source,\n target)\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 Effect: Allow\n Action: sts:AssumeRole\n Principal:\n Service: pipes.amazonaws.com\n Condition:\n StringEquals:\n aws:SourceAccount: ${main.accountId}\n source:\n type: aws:iam:RolePolicy\n properties:\n role: ${example.id}\n policy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Effect: Allow\n Action:\n - sqs:DeleteMessage\n - sqs:GetQueueAttributes\n - sqs:ReceiveMessage\n Resource:\n - ${sourceQueue.arn}\n sourceQueue:\n type: aws:sqs:Queue\n name: source\n target:\n type: aws:iam:RolePolicy\n properties:\n role: ${example.id}\n policy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Effect: Allow\n Action:\n - sqs:SendMessage\n Resource:\n - ${targetQueue.arn}\n targetQueue:\n type: aws:sqs:Queue\n name: target\n examplePipe:\n type: aws:pipes:Pipe\n name: example\n properties:\n name: example-pipe\n roleArn: ${example.arn}\n source: ${sourceQueue.arn}\n target: ${targetQueue.arn}\n options:\n dependson:\n - ${source}\n - ${target}\nvariables:\n main:\n fn::invoke:\n Function: aws:getCallerIdentity\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enrichment 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.pipes.Pipe(\"example\", {\n name: \"example-pipe\",\n roleArn: exampleAwsIamRole.arn,\n source: source.arn,\n target: target.arn,\n enrichment: exampleAwsCloudwatchEventApiDestination.arn,\n enrichmentParameters: {\n httpParameters: {\n pathParameterValues: \"example-path-param\",\n headerParameters: {\n \"example-header\": \"example-value\",\n \"second-example-header\": \"second-example-value\",\n },\n queryStringParameters: {\n \"example-query-string\": \"example-value\",\n \"second-example-query-string\": \"second-example-value\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.pipes.Pipe(\"example\",\n name=\"example-pipe\",\n role_arn=example_aws_iam_role[\"arn\"],\n source=source[\"arn\"],\n target=target[\"arn\"],\n enrichment=example_aws_cloudwatch_event_api_destination[\"arn\"],\n enrichment_parameters={\n \"http_parameters\": {\n \"path_parameter_values\": \"example-path-param\",\n \"header_parameters\": {\n \"example_header\": \"example-value\",\n \"second_example_header\": \"second-example-value\",\n },\n \"query_string_parameters\": {\n \"example_query_string\": \"example-value\",\n \"second_example_query_string\": \"second-example-value\",\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.Pipes.Pipe(\"example\", new()\n {\n Name = \"example-pipe\",\n RoleArn = exampleAwsIamRole.Arn,\n Source = source.Arn,\n Target = target.Arn,\n Enrichment = exampleAwsCloudwatchEventApiDestination.Arn,\n EnrichmentParameters = new Aws.Pipes.Inputs.PipeEnrichmentParametersArgs\n {\n HttpParameters = new Aws.Pipes.Inputs.PipeEnrichmentParametersHttpParametersArgs\n {\n PathParameterValues = \"example-path-param\",\n HeaderParameters = \n {\n { \"example-header\", \"example-value\" },\n { \"second-example-header\", \"second-example-value\" },\n },\n QueryStringParameters = \n {\n { \"example-query-string\", \"example-value\" },\n { \"second-example-query-string\", \"second-example-value\" },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/pipes\"\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 := pipes.NewPipe(ctx, \"example\", \u0026pipes.PipeArgs{\n\t\t\tName: pulumi.String(\"example-pipe\"),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tSource: pulumi.Any(source.Arn),\n\t\t\tTarget: pulumi.Any(target.Arn),\n\t\t\tEnrichment: pulumi.Any(exampleAwsCloudwatchEventApiDestination.Arn),\n\t\t\tEnrichmentParameters: \u0026pipes.PipeEnrichmentParametersArgs{\n\t\t\t\tHttpParameters: \u0026pipes.PipeEnrichmentParametersHttpParametersArgs{\n\t\t\t\t\tPathParameterValues: pulumi.String(\"example-path-param\"),\n\t\t\t\t\tHeaderParameters: pulumi.StringMap{\n\t\t\t\t\t\t\"example-header\": pulumi.String(\"example-value\"),\n\t\t\t\t\t\t\"second-example-header\": pulumi.String(\"second-example-value\"),\n\t\t\t\t\t},\n\t\t\t\t\tQueryStringParameters: pulumi.StringMap{\n\t\t\t\t\t\t\"example-query-string\": pulumi.String(\"example-value\"),\n\t\t\t\t\t\t\"second-example-query-string\": pulumi.String(\"second-example-value\"),\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.pipes.Pipe;\nimport com.pulumi.aws.pipes.PipeArgs;\nimport com.pulumi.aws.pipes.inputs.PipeEnrichmentParametersArgs;\nimport com.pulumi.aws.pipes.inputs.PipeEnrichmentParametersHttpParametersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Pipe(\"example\", PipeArgs.builder()\n .name(\"example-pipe\")\n .roleArn(exampleAwsIamRole.arn())\n .source(source.arn())\n .target(target.arn())\n .enrichment(exampleAwsCloudwatchEventApiDestination.arn())\n .enrichmentParameters(PipeEnrichmentParametersArgs.builder()\n .httpParameters(PipeEnrichmentParametersHttpParametersArgs.builder()\n .pathParameterValues(\"example-path-param\")\n .headerParameters(Map.ofEntries(\n Map.entry(\"example-header\", \"example-value\"),\n Map.entry(\"second-example-header\", \"second-example-value\")\n ))\n .queryStringParameters(Map.ofEntries(\n Map.entry(\"example-query-string\", \"example-value\"),\n Map.entry(\"second-example-query-string\", \"second-example-value\")\n ))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:pipes:Pipe\n properties:\n name: example-pipe\n roleArn: ${exampleAwsIamRole.arn}\n source: ${source.arn}\n target: ${target.arn}\n enrichment: ${exampleAwsCloudwatchEventApiDestination.arn}\n enrichmentParameters:\n httpParameters:\n pathParameterValues: example-path-param\n headerParameters:\n example-header: example-value\n second-example-header: second-example-value\n queryStringParameters:\n example-query-string: example-value\n second-example-query-string: second-example-value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Filter 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.pipes.Pipe(\"example\", {\n name: \"example-pipe\",\n roleArn: exampleAwsIamRole.arn,\n source: source.arn,\n target: target.arn,\n sourceParameters: {\n filterCriteria: {\n filters: [{\n pattern: JSON.stringify({\n source: [\"event-source\"],\n }),\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.pipes.Pipe(\"example\",\n name=\"example-pipe\",\n role_arn=example_aws_iam_role[\"arn\"],\n source=source[\"arn\"],\n target=target[\"arn\"],\n source_parameters={\n \"filter_criteria\": {\n \"filters\": [{\n \"pattern\": json.dumps({\n \"source\": [\"event-source\"],\n }),\n }],\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.Pipes.Pipe(\"example\", new()\n {\n Name = \"example-pipe\",\n RoleArn = exampleAwsIamRole.Arn,\n Source = source.Arn,\n Target = target.Arn,\n SourceParameters = new Aws.Pipes.Inputs.PipeSourceParametersArgs\n {\n FilterCriteria = new Aws.Pipes.Inputs.PipeSourceParametersFilterCriteriaArgs\n {\n Filters = new[]\n {\n new Aws.Pipes.Inputs.PipeSourceParametersFilterCriteriaFilterArgs\n {\n Pattern = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"source\"] = new[]\n {\n \"event-source\",\n },\n }),\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/v6/go/aws/pipes\"\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\"event-source\",\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 = pipes.NewPipe(ctx, \"example\", \u0026pipes.PipeArgs{\n\t\t\tName: pulumi.String(\"example-pipe\"),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tSource: pulumi.Any(source.Arn),\n\t\t\tTarget: pulumi.Any(target.Arn),\n\t\t\tSourceParameters: \u0026pipes.PipeSourceParametersArgs{\n\t\t\t\tFilterCriteria: \u0026pipes.PipeSourceParametersFilterCriteriaArgs{\n\t\t\t\t\tFilters: pipes.PipeSourceParametersFilterCriteriaFilterArray{\n\t\t\t\t\t\t\u0026pipes.PipeSourceParametersFilterCriteriaFilterArgs{\n\t\t\t\t\t\t\tPattern: pulumi.String(json0),\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.pipes.Pipe;\nimport com.pulumi.aws.pipes.PipeArgs;\nimport com.pulumi.aws.pipes.inputs.PipeSourceParametersArgs;\nimport com.pulumi.aws.pipes.inputs.PipeSourceParametersFilterCriteriaArgs;\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 Pipe(\"example\", PipeArgs.builder()\n .name(\"example-pipe\")\n .roleArn(exampleAwsIamRole.arn())\n .source(source.arn())\n .target(target.arn())\n .sourceParameters(PipeSourceParametersArgs.builder()\n .filterCriteria(PipeSourceParametersFilterCriteriaArgs.builder()\n .filters(PipeSourceParametersFilterCriteriaFilterArgs.builder()\n .pattern(serializeJson(\n jsonObject(\n jsonProperty(\"source\", jsonArray(\"event-source\"))\n )))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:pipes:Pipe\n properties:\n name: example-pipe\n roleArn: ${exampleAwsIamRole.arn}\n source: ${source.arn}\n target: ${target.arn}\n sourceParameters:\n filterCriteria:\n filters:\n - pattern:\n fn::toJSON:\n source:\n - event-source\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### SQS Source and Target Configuration Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.pipes.Pipe;\nimport com.pulumi.aws.pipes.PipeArgs;\nimport com.pulumi.aws.pipes.inputs.PipeSourceParametersArgs;\nimport com.pulumi.aws.pipes.inputs.PipeSourceParametersSqsQueueParametersArgs;\nimport com.pulumi.aws.pipes.inputs.PipeTargetParametersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Pipe(\"example\", PipeArgs.builder()\n .name(\"example-pipe\")\n .roleArn(exampleAwsIamRole.arn())\n .source(source.arn())\n .target(target.arn())\n .sourceParameters(PipeSourceParametersArgs.builder()\n .sqsQueueParameters(PipeSourceParametersSqsQueueParametersArgs.builder()\n .batchSize(1)\n .maximumBatchingWindowInSeconds(2)\n .build())\n .build())\n .targetParameters(PipeTargetParametersArgs.builder()\n .sqsQueue(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:pipes:Pipe\n properties:\n name: example-pipe\n roleArn: ${exampleAwsIamRole.arn}\n source: ${source.arn}\n target: ${target.arn}\n sourceParameters:\n sqsQueueParameters:\n batchSize: 1\n maximumBatchingWindowInSeconds: 2\n targetParameters:\n sqsQueue:\n - messageDeduplicationId: example-dedupe\n messageGroupId: example-group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import pipes using the `name`. For example:\n\n```sh\n$ pulumi import aws:pipes/pipe:Pipe example my-pipe\n```\n", + "description": "Resource for managing an AWS EventBridge Pipes Pipe.\n\nYou can find out more about EventBridge Pipes in the [User Guide](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html).\n\nEventBridge Pipes are very configurable, and may require IAM permissions to work correctly. More information on the configuration options and IAM permissions can be found in the [User Guide](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html).\n\n\u003e **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical.\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 main = aws.getCallerIdentity({});\nconst example = new aws.iam.Role(\"example\", {assumeRolePolicy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: {\n Effect: \"Allow\",\n Action: \"sts:AssumeRole\",\n Principal: {\n Service: \"pipes.amazonaws.com\",\n },\n Condition: {\n StringEquals: {\n \"aws:SourceAccount\": main.then(main =\u003e main.accountId),\n },\n },\n },\n})});\nconst sourceQueue = new aws.sqs.Queue(\"source\", {});\nconst source = new aws.iam.RolePolicy(\"source\", {\n role: example.id,\n policy: pulumi.jsonStringify({\n Version: \"2012-10-17\",\n Statement: [{\n Effect: \"Allow\",\n Action: [\n \"sqs:DeleteMessage\",\n \"sqs:GetQueueAttributes\",\n \"sqs:ReceiveMessage\",\n ],\n Resource: [sourceQueue.arn],\n }],\n }),\n});\nconst targetQueue = new aws.sqs.Queue(\"target\", {});\nconst target = new aws.iam.RolePolicy(\"target\", {\n role: example.id,\n policy: pulumi.jsonStringify({\n Version: \"2012-10-17\",\n Statement: [{\n Effect: \"Allow\",\n Action: [\"sqs:SendMessage\"],\n Resource: [targetQueue.arn],\n }],\n }),\n});\nconst examplePipe = new aws.pipes.Pipe(\"example\", {\n name: \"example-pipe\",\n roleArn: example.arn,\n source: sourceQueue.arn,\n target: targetQueue.arn,\n}, {\n dependsOn: [\n source,\n target,\n ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nmain = aws.get_caller_identity()\nexample = aws.iam.Role(\"example\", assume_role_policy=json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": {\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"pipes.amazonaws.com\",\n },\n \"Condition\": {\n \"StringEquals\": {\n \"aws:SourceAccount\": main.account_id,\n },\n },\n },\n}))\nsource_queue = aws.sqs.Queue(\"source\")\nsource = aws.iam.RolePolicy(\"source\",\n role=example.id,\n policy=pulumi.Output.json_dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"sqs:DeleteMessage\",\n \"sqs:GetQueueAttributes\",\n \"sqs:ReceiveMessage\",\n ],\n \"Resource\": [source_queue.arn],\n }],\n }))\ntarget_queue = aws.sqs.Queue(\"target\")\ntarget = aws.iam.RolePolicy(\"target\",\n role=example.id,\n policy=pulumi.Output.json_dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Action\": [\"sqs:SendMessage\"],\n \"Resource\": [target_queue.arn],\n }],\n }))\nexample_pipe = aws.pipes.Pipe(\"example\",\n name=\"example-pipe\",\n role_arn=example.arn,\n source=source_queue.arn,\n target=target_queue.arn,\n opts = pulumi.ResourceOptions(depends_on=[\n source,\n target,\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 main = Aws.GetCallerIdentity.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 Dictionary\u003cstring, object?\u003e\n {\n [\"Effect\"] = \"Allow\",\n [\"Action\"] = \"sts:AssumeRole\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Service\"] = \"pipes.amazonaws.com\",\n },\n [\"Condition\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"StringEquals\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"aws:SourceAccount\"] = main.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.AccountId),\n },\n },\n },\n }),\n });\n\n var sourceQueue = new Aws.Sqs.Queue(\"source\");\n\n var source = new Aws.Iam.RolePolicy(\"source\", new()\n {\n Role = example.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 [\"Action\"] = new[]\n {\n \"sqs:DeleteMessage\",\n \"sqs:GetQueueAttributes\",\n \"sqs:ReceiveMessage\",\n },\n [\"Resource\"] = new[]\n {\n sourceQueue.Arn,\n },\n },\n },\n })),\n });\n\n var targetQueue = new Aws.Sqs.Queue(\"target\");\n\n var target = new Aws.Iam.RolePolicy(\"target\", new()\n {\n Role = example.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 [\"Action\"] = new[]\n {\n \"sqs:SendMessage\",\n },\n [\"Resource\"] = new[]\n {\n targetQueue.Arn,\n },\n },\n },\n })),\n });\n\n var examplePipe = new Aws.Pipes.Pipe(\"example\", new()\n {\n Name = \"example-pipe\",\n RoleArn = example.Arn,\n Source = sourceQueue.Arn,\n Target = targetQueue.Arn,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n source,\n target,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/pipes\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\tmain, err := aws.GetCallerIdentity(ctx, nil, 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\t\"Effect\": \"Allow\",\n\t\t\t\t\"Action\": \"sts:AssumeRole\",\n\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\"Service\": \"pipes.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\t\"Condition\": map[string]interface{}{\n\t\t\t\t\t\"StringEquals\": map[string]interface{}{\n\t\t\t\t\t\t\"aws:SourceAccount\": main.AccountId,\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\tsourceQueue, err := sqs.NewQueue(ctx, \"source\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := iam.NewRolePolicy(ctx, \"source\", \u0026iam.RolePolicyArgs{\n\t\t\tRole: example.ID(),\n\t\t\tPolicy: sourceQueue.Arn.ApplyT(func(arn string) (pulumi.String, error) {\n\t\t\t\tvar _zero pulumi.String\n\t\t\t\ttmpJSON1, 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\"Action\": []string{\n\t\t\t\t\t\t\t\t\"sqs:DeleteMessage\",\n\t\t\t\t\t\t\t\t\"sqs:GetQueueAttributes\",\n\t\t\t\t\t\t\t\t\"sqs:ReceiveMessage\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\t\tarn,\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\tjson1 := string(tmpJSON1)\n\t\t\t\treturn pulumi.String(json1), 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\ttargetQueue, err := sqs.NewQueue(ctx, \"target\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttarget, err := iam.NewRolePolicy(ctx, \"target\", \u0026iam.RolePolicyArgs{\n\t\t\tRole: example.ID(),\n\t\t\tPolicy: targetQueue.Arn.ApplyT(func(arn string) (pulumi.String, error) {\n\t\t\t\tvar _zero pulumi.String\n\t\t\t\ttmpJSON2, 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\"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\": []string{\n\t\t\t\t\t\t\t\tarn,\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\tjson2 := string(tmpJSON2)\n\t\t\t\treturn pulumi.String(json2), 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 = pipes.NewPipe(ctx, \"example\", \u0026pipes.PipeArgs{\n\t\t\tName: pulumi.String(\"example-pipe\"),\n\t\t\tRoleArn: example.Arn,\n\t\t\tSource: sourceQueue.Arn,\n\t\t\tTarget: targetQueue.Arn,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsource,\n\t\t\ttarget,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.sqs.Queue;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.pipes.Pipe;\nimport com.pulumi.aws.pipes.PipeArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 main = AwsFunctions.getCallerIdentity();\n\n var example = new Role(\"example\", RoleArgs.builder()\n .assumeRolePolicy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Action\", \"sts:AssumeRole\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"Service\", \"pipes.amazonaws.com\")\n )),\n jsonProperty(\"Condition\", jsonObject(\n jsonProperty(\"StringEquals\", jsonObject(\n jsonProperty(\"aws:SourceAccount\", main.applyValue(getCallerIdentityResult -\u003e getCallerIdentityResult.accountId()))\n ))\n ))\n ))\n )))\n .build());\n\n var sourceQueue = new Queue(\"sourceQueue\");\n\n var source = new RolePolicy(\"source\", RolePolicyArgs.builder()\n .role(example.id())\n .policy(sourceQueue.arn().applyValue(arn -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Action\", jsonArray(\n \"sqs:DeleteMessage\", \n \"sqs:GetQueueAttributes\", \n \"sqs:ReceiveMessage\"\n )),\n jsonProperty(\"Resource\", jsonArray(arn))\n )))\n ))))\n .build());\n\n var targetQueue = new Queue(\"targetQueue\");\n\n var target = new RolePolicy(\"target\", RolePolicyArgs.builder()\n .role(example.id())\n .policy(targetQueue.arn().applyValue(arn -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Action\", jsonArray(\"sqs:SendMessage\")),\n jsonProperty(\"Resource\", jsonArray(arn))\n )))\n ))))\n .build());\n\n var examplePipe = new Pipe(\"examplePipe\", PipeArgs.builder()\n .name(\"example-pipe\")\n .roleArn(example.arn())\n .source(sourceQueue.arn())\n .target(targetQueue.arn())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n source,\n target)\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 Effect: Allow\n Action: sts:AssumeRole\n Principal:\n Service: pipes.amazonaws.com\n Condition:\n StringEquals:\n aws:SourceAccount: ${main.accountId}\n source:\n type: aws:iam:RolePolicy\n properties:\n role: ${example.id}\n policy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Effect: Allow\n Action:\n - sqs:DeleteMessage\n - sqs:GetQueueAttributes\n - sqs:ReceiveMessage\n Resource:\n - ${sourceQueue.arn}\n sourceQueue:\n type: aws:sqs:Queue\n name: source\n target:\n type: aws:iam:RolePolicy\n properties:\n role: ${example.id}\n policy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Effect: Allow\n Action:\n - sqs:SendMessage\n Resource:\n - ${targetQueue.arn}\n targetQueue:\n type: aws:sqs:Queue\n name: target\n examplePipe:\n type: aws:pipes:Pipe\n name: example\n properties:\n name: example-pipe\n roleArn: ${example.arn}\n source: ${sourceQueue.arn}\n target: ${targetQueue.arn}\n options:\n dependson:\n - ${source}\n - ${target}\nvariables:\n main:\n fn::invoke:\n Function: aws:getCallerIdentity\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enrichment 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.pipes.Pipe(\"example\", {\n name: \"example-pipe\",\n roleArn: exampleAwsIamRole.arn,\n source: source.arn,\n target: target.arn,\n enrichment: exampleAwsCloudwatchEventApiDestination.arn,\n enrichmentParameters: {\n httpParameters: {\n pathParameterValues: \"example-path-param\",\n headerParameters: {\n \"example-header\": \"example-value\",\n \"second-example-header\": \"second-example-value\",\n },\n queryStringParameters: {\n \"example-query-string\": \"example-value\",\n \"second-example-query-string\": \"second-example-value\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.pipes.Pipe(\"example\",\n name=\"example-pipe\",\n role_arn=example_aws_iam_role[\"arn\"],\n source=source[\"arn\"],\n target=target[\"arn\"],\n enrichment=example_aws_cloudwatch_event_api_destination[\"arn\"],\n enrichment_parameters={\n \"http_parameters\": {\n \"path_parameter_values\": \"example-path-param\",\n \"header_parameters\": {\n \"example_header\": \"example-value\",\n \"second_example_header\": \"second-example-value\",\n },\n \"query_string_parameters\": {\n \"example_query_string\": \"example-value\",\n \"second_example_query_string\": \"second-example-value\",\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.Pipes.Pipe(\"example\", new()\n {\n Name = \"example-pipe\",\n RoleArn = exampleAwsIamRole.Arn,\n Source = source.Arn,\n Target = target.Arn,\n Enrichment = exampleAwsCloudwatchEventApiDestination.Arn,\n EnrichmentParameters = new Aws.Pipes.Inputs.PipeEnrichmentParametersArgs\n {\n HttpParameters = new Aws.Pipes.Inputs.PipeEnrichmentParametersHttpParametersArgs\n {\n PathParameterValues = \"example-path-param\",\n HeaderParameters = \n {\n { \"example-header\", \"example-value\" },\n { \"second-example-header\", \"second-example-value\" },\n },\n QueryStringParameters = \n {\n { \"example-query-string\", \"example-value\" },\n { \"second-example-query-string\", \"second-example-value\" },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/pipes\"\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 := pipes.NewPipe(ctx, \"example\", \u0026pipes.PipeArgs{\n\t\t\tName: pulumi.String(\"example-pipe\"),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tSource: pulumi.Any(source.Arn),\n\t\t\tTarget: pulumi.Any(target.Arn),\n\t\t\tEnrichment: pulumi.Any(exampleAwsCloudwatchEventApiDestination.Arn),\n\t\t\tEnrichmentParameters: \u0026pipes.PipeEnrichmentParametersArgs{\n\t\t\t\tHttpParameters: \u0026pipes.PipeEnrichmentParametersHttpParametersArgs{\n\t\t\t\t\tPathParameterValues: pulumi.String(\"example-path-param\"),\n\t\t\t\t\tHeaderParameters: pulumi.StringMap{\n\t\t\t\t\t\t\"example-header\": pulumi.String(\"example-value\"),\n\t\t\t\t\t\t\"second-example-header\": pulumi.String(\"second-example-value\"),\n\t\t\t\t\t},\n\t\t\t\t\tQueryStringParameters: pulumi.StringMap{\n\t\t\t\t\t\t\"example-query-string\": pulumi.String(\"example-value\"),\n\t\t\t\t\t\t\"second-example-query-string\": pulumi.String(\"second-example-value\"),\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.pipes.Pipe;\nimport com.pulumi.aws.pipes.PipeArgs;\nimport com.pulumi.aws.pipes.inputs.PipeEnrichmentParametersArgs;\nimport com.pulumi.aws.pipes.inputs.PipeEnrichmentParametersHttpParametersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Pipe(\"example\", PipeArgs.builder()\n .name(\"example-pipe\")\n .roleArn(exampleAwsIamRole.arn())\n .source(source.arn())\n .target(target.arn())\n .enrichment(exampleAwsCloudwatchEventApiDestination.arn())\n .enrichmentParameters(PipeEnrichmentParametersArgs.builder()\n .httpParameters(PipeEnrichmentParametersHttpParametersArgs.builder()\n .pathParameterValues(\"example-path-param\")\n .headerParameters(Map.ofEntries(\n Map.entry(\"example-header\", \"example-value\"),\n Map.entry(\"second-example-header\", \"second-example-value\")\n ))\n .queryStringParameters(Map.ofEntries(\n Map.entry(\"example-query-string\", \"example-value\"),\n Map.entry(\"second-example-query-string\", \"second-example-value\")\n ))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:pipes:Pipe\n properties:\n name: example-pipe\n roleArn: ${exampleAwsIamRole.arn}\n source: ${source.arn}\n target: ${target.arn}\n enrichment: ${exampleAwsCloudwatchEventApiDestination.arn}\n enrichmentParameters:\n httpParameters:\n pathParameterValues: example-path-param\n headerParameters:\n example-header: example-value\n second-example-header: second-example-value\n queryStringParameters:\n example-query-string: example-value\n second-example-query-string: second-example-value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Filter 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.pipes.Pipe(\"example\", {\n name: \"example-pipe\",\n roleArn: exampleAwsIamRole.arn,\n source: source.arn,\n target: target.arn,\n sourceParameters: {\n filterCriteria: {\n filters: [{\n pattern: JSON.stringify({\n source: [\"event-source\"],\n }),\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.pipes.Pipe(\"example\",\n name=\"example-pipe\",\n role_arn=example_aws_iam_role[\"arn\"],\n source=source[\"arn\"],\n target=target[\"arn\"],\n source_parameters={\n \"filter_criteria\": {\n \"filters\": [{\n \"pattern\": json.dumps({\n \"source\": [\"event-source\"],\n }),\n }],\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.Pipes.Pipe(\"example\", new()\n {\n Name = \"example-pipe\",\n RoleArn = exampleAwsIamRole.Arn,\n Source = source.Arn,\n Target = target.Arn,\n SourceParameters = new Aws.Pipes.Inputs.PipeSourceParametersArgs\n {\n FilterCriteria = new Aws.Pipes.Inputs.PipeSourceParametersFilterCriteriaArgs\n {\n Filters = new[]\n {\n new Aws.Pipes.Inputs.PipeSourceParametersFilterCriteriaFilterArgs\n {\n Pattern = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"source\"] = new[]\n {\n \"event-source\",\n },\n }),\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/v6/go/aws/pipes\"\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\"event-source\",\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 = pipes.NewPipe(ctx, \"example\", \u0026pipes.PipeArgs{\n\t\t\tName: pulumi.String(\"example-pipe\"),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tSource: pulumi.Any(source.Arn),\n\t\t\tTarget: pulumi.Any(target.Arn),\n\t\t\tSourceParameters: \u0026pipes.PipeSourceParametersArgs{\n\t\t\t\tFilterCriteria: \u0026pipes.PipeSourceParametersFilterCriteriaArgs{\n\t\t\t\t\tFilters: pipes.PipeSourceParametersFilterCriteriaFilterArray{\n\t\t\t\t\t\t\u0026pipes.PipeSourceParametersFilterCriteriaFilterArgs{\n\t\t\t\t\t\t\tPattern: pulumi.String(json0),\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.pipes.Pipe;\nimport com.pulumi.aws.pipes.PipeArgs;\nimport com.pulumi.aws.pipes.inputs.PipeSourceParametersArgs;\nimport com.pulumi.aws.pipes.inputs.PipeSourceParametersFilterCriteriaArgs;\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 Pipe(\"example\", PipeArgs.builder()\n .name(\"example-pipe\")\n .roleArn(exampleAwsIamRole.arn())\n .source(source.arn())\n .target(target.arn())\n .sourceParameters(PipeSourceParametersArgs.builder()\n .filterCriteria(PipeSourceParametersFilterCriteriaArgs.builder()\n .filters(PipeSourceParametersFilterCriteriaFilterArgs.builder()\n .pattern(serializeJson(\n jsonObject(\n jsonProperty(\"source\", jsonArray(\"event-source\"))\n )))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:pipes:Pipe\n properties:\n name: example-pipe\n roleArn: ${exampleAwsIamRole.arn}\n source: ${source.arn}\n target: ${target.arn}\n sourceParameters:\n filterCriteria:\n filters:\n - pattern:\n fn::toJSON:\n source:\n - event-source\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### CloudWatch Logs Logging Configuration 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\", {name: \"example-pipe-target\"});\nconst examplePipe = new aws.pipes.Pipe(\"example\", {\n name: \"example-pipe\",\n roleArn: exampleAwsIamRole.arn,\n source: sourceAwsSqsQueue.arn,\n target: targetAwsSqsQueue.arn,\n logConfiguration: {\n includeExecutionDatas: [\"ALL\"],\n level: \"INFO\",\n cloudwatchLogsLogDestination: {\n logGroupArn: targetAwsCloudwatchLogGroup.arn,\n },\n },\n}, {\n dependsOn: [\n source,\n target,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.cloudwatch.LogGroup(\"example\", name=\"example-pipe-target\")\nexample_pipe = aws.pipes.Pipe(\"example\",\n name=\"example-pipe\",\n role_arn=example_aws_iam_role[\"arn\"],\n source=source_aws_sqs_queue[\"arn\"],\n target=target_aws_sqs_queue[\"arn\"],\n log_configuration={\n \"include_execution_datas\": [\"ALL\"],\n \"level\": \"INFO\",\n \"cloudwatch_logs_log_destination\": {\n \"log_group_arn\": target_aws_cloudwatch_log_group[\"arn\"],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n source,\n target,\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.LogGroup(\"example\", new()\n {\n Name = \"example-pipe-target\",\n });\n\n var examplePipe = new Aws.Pipes.Pipe(\"example\", new()\n {\n Name = \"example-pipe\",\n RoleArn = exampleAwsIamRole.Arn,\n Source = sourceAwsSqsQueue.Arn,\n Target = targetAwsSqsQueue.Arn,\n LogConfiguration = new Aws.Pipes.Inputs.PipeLogConfigurationArgs\n {\n IncludeExecutionDatas = new[]\n {\n \"ALL\",\n },\n Level = \"INFO\",\n CloudwatchLogsLogDestination = new Aws.Pipes.Inputs.PipeLogConfigurationCloudwatchLogsLogDestinationArgs\n {\n LogGroupArn = targetAwsCloudwatchLogGroup.Arn,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n source,\n target,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/pipes\"\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.NewLogGroup(ctx, \"example\", \u0026cloudwatch.LogGroupArgs{\n\t\t\tName: pulumi.String(\"example-pipe-target\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pipes.NewPipe(ctx, \"example\", \u0026pipes.PipeArgs{\n\t\t\tName: pulumi.String(\"example-pipe\"),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tSource: pulumi.Any(sourceAwsSqsQueue.Arn),\n\t\t\tTarget: pulumi.Any(targetAwsSqsQueue.Arn),\n\t\t\tLogConfiguration: \u0026pipes.PipeLogConfigurationArgs{\n\t\t\t\tIncludeExecutionDatas: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL\"),\n\t\t\t\t},\n\t\t\t\tLevel: pulumi.String(\"INFO\"),\n\t\t\t\tCloudwatchLogsLogDestination: \u0026pipes.PipeLogConfigurationCloudwatchLogsLogDestinationArgs{\n\t\t\t\t\tLogGroupArn: pulumi.Any(targetAwsCloudwatchLogGroup.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsource,\n\t\t\ttarget,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.pipes.Pipe;\nimport com.pulumi.aws.pipes.PipeArgs;\nimport com.pulumi.aws.pipes.inputs.PipeLogConfigurationArgs;\nimport com.pulumi.aws.pipes.inputs.PipeLogConfigurationCloudwatchLogsLogDestinationArgs;\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 LogGroup(\"example\", LogGroupArgs.builder()\n .name(\"example-pipe-target\")\n .build());\n\n var examplePipe = new Pipe(\"examplePipe\", PipeArgs.builder()\n .name(\"example-pipe\")\n .roleArn(exampleAwsIamRole.arn())\n .source(sourceAwsSqsQueue.arn())\n .target(targetAwsSqsQueue.arn())\n .logConfiguration(PipeLogConfigurationArgs.builder()\n .includeExecutionDatas(\"ALL\")\n .level(\"INFO\")\n .cloudwatchLogsLogDestination(PipeLogConfigurationCloudwatchLogsLogDestinationArgs.builder()\n .logGroupArn(targetAwsCloudwatchLogGroup.arn())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n source,\n target)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cloudwatch:LogGroup\n properties:\n name: example-pipe-target\n examplePipe:\n type: aws:pipes:Pipe\n name: example\n properties:\n name: example-pipe\n roleArn: ${exampleAwsIamRole.arn}\n source: ${sourceAwsSqsQueue.arn}\n target: ${targetAwsSqsQueue.arn}\n logConfiguration:\n includeExecutionDatas:\n - ALL\n level: INFO\n cloudwatchLogsLogDestination:\n logGroupArn: ${targetAwsCloudwatchLogGroup.arn}\n options:\n dependson:\n - ${source}\n - ${target}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### SQS Source and Target Configuration Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.pipes.Pipe;\nimport com.pulumi.aws.pipes.PipeArgs;\nimport com.pulumi.aws.pipes.inputs.PipeSourceParametersArgs;\nimport com.pulumi.aws.pipes.inputs.PipeSourceParametersSqsQueueParametersArgs;\nimport com.pulumi.aws.pipes.inputs.PipeTargetParametersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Pipe(\"example\", PipeArgs.builder()\n .name(\"example-pipe\")\n .roleArn(exampleAwsIamRole.arn())\n .source(source.arn())\n .target(target.arn())\n .sourceParameters(PipeSourceParametersArgs.builder()\n .sqsQueueParameters(PipeSourceParametersSqsQueueParametersArgs.builder()\n .batchSize(1)\n .maximumBatchingWindowInSeconds(2)\n .build())\n .build())\n .targetParameters(PipeTargetParametersArgs.builder()\n .sqsQueue(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:pipes:Pipe\n properties:\n name: example-pipe\n roleArn: ${exampleAwsIamRole.arn}\n source: ${source.arn}\n target: ${target.arn}\n sourceParameters:\n sqsQueueParameters:\n batchSize: 1\n maximumBatchingWindowInSeconds: 2\n targetParameters:\n sqsQueue:\n - messageDeduplicationId: example-dedupe\n messageGroupId: example-group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import pipes using the `name`. For example:\n\n```sh\n$ pulumi import aws:pipes/pipe:Pipe example my-pipe\n```\n", "properties": { "arn": { "type": "string", @@ -316043,17 +317022,29 @@ "type": "string", "description": "Network type of the cluster. Valid values: `IPV4`, `DUAL`.\n" }, + "performanceInsightsEnabled": { + "type": "boolean", + "description": "Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster\n" + }, + "performanceInsightsKmsKeyId": { + "type": "string", + "description": "Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`).\n" + }, + "performanceInsightsRetentionPeriod": { + "type": "integer", + "description": "Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods.\n" + }, "port": { "type": "integer", - "description": "Port on which the DB accepts connections\n" + "description": "Port on which the DB accepts connections.\n" }, "preferredBackupWindow": { "type": "string", - "description": "Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00\n" + "description": "Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`.\n" }, "preferredMaintenanceWindow": { "type": "string", - "description": "Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30\n" + "description": "Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30`\n" }, "readerEndpoint": { "type": "string", @@ -316149,6 +317140,8 @@ "masterUserSecretKmsKeyId", "masterUsername", "networkType", + "performanceInsightsKmsKeyId", + "performanceInsightsRetentionPeriod", "port", "preferredBackupWindow", "preferredMaintenanceWindow", @@ -316360,17 +317353,29 @@ "type": "string", "description": "Network type of the cluster. Valid values: `IPV4`, `DUAL`.\n" }, + "performanceInsightsEnabled": { + "type": "boolean", + "description": "Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster\n" + }, + "performanceInsightsKmsKeyId": { + "type": "string", + "description": "Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`).\n" + }, + "performanceInsightsRetentionPeriod": { + "type": "integer", + "description": "Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods.\n" + }, "port": { "type": "integer", - "description": "Port on which the DB accepts connections\n" + "description": "Port on which the DB accepts connections.\n" }, "preferredBackupWindow": { "type": "string", - "description": "Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00\n" + "description": "Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`.\n" }, "preferredMaintenanceWindow": { "type": "string", - "description": "Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30\n" + "description": "Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30`\n" }, "replicationSourceIdentifier": { "type": "string", @@ -316668,17 +317673,29 @@ "type": "string", "description": "Network type of the cluster. Valid values: `IPV4`, `DUAL`.\n" }, + "performanceInsightsEnabled": { + "type": "boolean", + "description": "Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster\n" + }, + "performanceInsightsKmsKeyId": { + "type": "string", + "description": "Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`).\n" + }, + "performanceInsightsRetentionPeriod": { + "type": "integer", + "description": "Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods.\n" + }, "port": { "type": "integer", - "description": "Port on which the DB accepts connections\n" + "description": "Port on which the DB accepts connections.\n" }, "preferredBackupWindow": { "type": "string", - "description": "Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00\n" + "description": "Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`.\n" }, "preferredMaintenanceWindow": { "type": "string", - "description": "Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30\n" + "description": "Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30`\n" }, "readerEndpoint": { "type": "string", @@ -319078,6 +320095,10 @@ "type": "string", "description": "Time zone of the DB instance. `timezone` is currently\nonly supported by Microsoft SQL Server. The `timezone` can only be set on\ncreation. See [MSSQL User\nGuide](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone)\nfor more information.\n" }, + "upgradeStorageConfig": { + "type": "boolean", + "description": "Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`.\n" + }, "username": { "type": "string", "description": "(Required unless a `snapshot_identifier` or `replicate_source_db`\nis provided) Username for the master DB user. Cannot be specified for a replica.\n" @@ -319447,6 +320468,10 @@ "description": "Time zone of the DB instance. `timezone` is currently\nonly supported by Microsoft SQL Server. The `timezone` can only be set on\ncreation. See [MSSQL User\nGuide](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone)\nfor more information.\n", "willReplaceOnChanges": true }, + "upgradeStorageConfig": { + "type": "boolean", + "description": "Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`.\n" + }, "username": { "type": "string", "description": "(Required unless a `snapshot_identifier` or `replicate_source_db`\nis provided) Username for the master DB user. Cannot be specified for a replica.\n", @@ -319831,6 +320856,10 @@ "description": "Time zone of the DB instance. `timezone` is currently\nonly supported by Microsoft SQL Server. The `timezone` can only be set on\ncreation. See [MSSQL User\nGuide](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone)\nfor more information.\n", "willReplaceOnChanges": true }, + "upgradeStorageConfig": { + "type": "boolean", + "description": "Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`.\n" + }, "username": { "type": "string", "description": "(Required unless a `snapshot_identifier` or `replicate_source_db`\nis provided) Username for the master DB user. Cannot be specified for a replica.\n", @@ -332382,7 +333411,7 @@ } }, "aws:s3/bucketNotification:BucketNotification": { - "description": "Manages a S3 Bucket Notification Configuration. For additional information, see the [Configuring S3 Event Notifications section in the Amazon S3 Developer Guide](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).\n\n\u003e **NOTE:** S3 Buckets only support a single notification configuration. Declaring multiple `aws.s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. See the example \"Trigger multiple Lambda functions\" for an option.\n\n\u003e This resource cannot be used with S3 directory buckets.\n\n## Example Usage\n\n### Add notification configuration to SNS Topic\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.BucketV2(\"bucket\", {bucket: \"your-bucket-name\"});\nconst topic = aws.iam.getPolicyDocumentOutput({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"s3.amazonaws.com\"],\n }],\n actions: [\"SNS:Publish\"],\n resources: [\"arn:aws:sns:*:*:s3-event-notification-topic\"],\n conditions: [{\n test: \"ArnLike\",\n variable: \"aws:SourceArn\",\n values: [bucket.arn],\n }],\n }],\n});\nconst topicTopic = new aws.sns.Topic(\"topic\", {\n name: \"s3-event-notification-topic\",\n policy: topic.apply(topic =\u003e topic.json),\n});\nconst bucketNotification = new aws.s3.BucketNotification(\"bucket_notification\", {\n bucket: bucket.id,\n topics: [{\n topicArn: topicTopic.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterSuffix: \".log\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"your-bucket-name\")\ntopic = aws.iam.get_policy_document_output(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"s3.amazonaws.com\"],\n }],\n \"actions\": [\"SNS:Publish\"],\n \"resources\": [\"arn:aws:sns:*:*:s3-event-notification-topic\"],\n \"conditions\": [{\n \"test\": \"ArnLike\",\n \"variable\": \"aws:SourceArn\",\n \"values\": [bucket.arn],\n }],\n}])\ntopic_topic = aws.sns.Topic(\"topic\",\n name=\"s3-event-notification-topic\",\n policy=topic.json)\nbucket_notification = aws.s3.BucketNotification(\"bucket_notification\",\n bucket=bucket.id,\n topics=[{\n \"topic_arn\": topic_topic.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_suffix\": \".log\",\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 bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"your-bucket-name\",\n });\n\n var topic = 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 \"s3.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"SNS:Publish\",\n },\n Resources = new[]\n {\n \"arn:aws:sns:*:*:s3-event-notification-topic\",\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"ArnLike\",\n Variable = \"aws:SourceArn\",\n Values = new[]\n {\n bucket.Arn,\n },\n },\n },\n },\n },\n });\n\n var topicTopic = new Aws.Sns.Topic(\"topic\", new()\n {\n Name = \"s3-event-notification-topic\",\n Policy = topic.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var bucketNotification = new Aws.S3.BucketNotification(\"bucket_notification\", new()\n {\n Bucket = bucket.Id,\n Topics = new[]\n {\n new Aws.S3.Inputs.BucketNotificationTopicArgs\n {\n TopicArn = topicTopic.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterSuffix = \".log\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"your-bucket-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic := 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\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(\"s3.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(\"SNS:Publish\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"arn:aws:sns:*:*:s3-event-notification-topic\"),\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(\"ArnLike\"),\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\tbucket.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\ttopicTopic, err := sns.NewTopic(ctx, \"topic\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"s3-event-notification-topic\"),\n\t\t\tPolicy: pulumi.String(topic.ApplyT(func(topic iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026topic.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 = s3.NewBucketNotification(ctx, \"bucket_notification\", \u0026s3.BucketNotificationArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tTopics: s3.BucketNotificationTopicArray{\n\t\t\t\t\u0026s3.BucketNotificationTopicArgs{\n\t\t\t\t\tTopicArn: topicTopic.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterSuffix: pulumi.String(\".log\"),\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.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\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.s3.BucketNotification;\nimport com.pulumi.aws.s3.BucketNotificationArgs;\nimport com.pulumi.aws.s3.inputs.BucketNotificationTopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"your-bucket-name\")\n .build());\n\n final var topic = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"s3.amazonaws.com\")\n .build())\n .actions(\"SNS:Publish\")\n .resources(\"arn:aws:sns:*:*:s3-event-notification-topic\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"ArnLike\")\n .variable(\"aws:SourceArn\")\n .values(bucket.arn())\n .build())\n .build())\n .build());\n\n var topicTopic = new Topic(\"topicTopic\", TopicArgs.builder()\n .name(\"s3-event-notification-topic\")\n .policy(topic.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult).applyValue(topic -\u003e topic.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json())))\n .build());\n\n var bucketNotification = new BucketNotification(\"bucketNotification\", BucketNotificationArgs.builder()\n .bucket(bucket.id())\n .topics(BucketNotificationTopicArgs.builder()\n .topicArn(topicTopic.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterSuffix(\".log\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n topicTopic:\n type: aws:sns:Topic\n name: topic\n properties:\n name: s3-event-notification-topic\n policy: ${topic.json}\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: your-bucket-name\n bucketNotification:\n type: aws:s3:BucketNotification\n name: bucket_notification\n properties:\n bucket: ${bucket.id}\n topics:\n - topicArn: ${topicTopic.arn}\n events:\n - s3:ObjectCreated:*\n filterSuffix: .log\nvariables:\n topic:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - s3.amazonaws.com\n actions:\n - SNS:Publish\n resources:\n - arn:aws:sns:*:*:s3-event-notification-topic\n conditions:\n - test: ArnLike\n variable: aws:SourceArn\n values:\n - ${bucket.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Add notification configuration to SQS Queue\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.BucketV2(\"bucket\", {bucket: \"your-bucket-name\"});\nconst queue = aws.iam.getPolicyDocumentOutput({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"*\",\n identifiers: [\"*\"],\n }],\n actions: [\"sqs:SendMessage\"],\n resources: [\"arn:aws:sqs:*:*:s3-event-notification-queue\"],\n conditions: [{\n test: \"ArnEquals\",\n variable: \"aws:SourceArn\",\n values: [bucket.arn],\n }],\n }],\n});\nconst queueQueue = new aws.sqs.Queue(\"queue\", {\n name: \"s3-event-notification-queue\",\n policy: queue.apply(queue =\u003e queue.json),\n});\nconst bucketNotification = new aws.s3.BucketNotification(\"bucket_notification\", {\n bucket: bucket.id,\n queues: [{\n queueArn: queueQueue.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterSuffix: \".log\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"your-bucket-name\")\nqueue = aws.iam.get_policy_document_output(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"*\",\n \"identifiers\": [\"*\"],\n }],\n \"actions\": [\"sqs:SendMessage\"],\n \"resources\": [\"arn:aws:sqs:*:*:s3-event-notification-queue\"],\n \"conditions\": [{\n \"test\": \"ArnEquals\",\n \"variable\": \"aws:SourceArn\",\n \"values\": [bucket.arn],\n }],\n}])\nqueue_queue = aws.sqs.Queue(\"queue\",\n name=\"s3-event-notification-queue\",\n policy=queue.json)\nbucket_notification = aws.s3.BucketNotification(\"bucket_notification\",\n bucket=bucket.id,\n queues=[{\n \"queue_arn\": queue_queue.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_suffix\": \".log\",\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 bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"your-bucket-name\",\n });\n\n var queue = 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 = \"*\",\n Identifiers = new[]\n {\n \"*\",\n },\n },\n },\n Actions = new[]\n {\n \"sqs:SendMessage\",\n },\n Resources = new[]\n {\n \"arn:aws:sqs:*:*:s3-event-notification-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 bucket.Arn,\n },\n },\n },\n },\n },\n });\n\n var queueQueue = new Aws.Sqs.Queue(\"queue\", new()\n {\n Name = \"s3-event-notification-queue\",\n Policy = queue.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var bucketNotification = new Aws.S3.BucketNotification(\"bucket_notification\", new()\n {\n Bucket = bucket.Id,\n Queues = new[]\n {\n new Aws.S3.Inputs.BucketNotificationQueueArgs\n {\n QueueArn = queueQueue.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterSuffix = \".log\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"your-bucket-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tqueue := 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\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"*\"),\n\t\t\t\t\t\t\tIdentifiers: 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\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:*:*:s3-event-notification-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\tbucket.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\tqueueQueue, err := sqs.NewQueue(ctx, \"queue\", \u0026sqs.QueueArgs{\n\t\t\tName: pulumi.String(\"s3-event-notification-queue\"),\n\t\t\tPolicy: pulumi.String(queue.ApplyT(func(queue iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026queue.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 = s3.NewBucketNotification(ctx, \"bucket_notification\", \u0026s3.BucketNotificationArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tQueues: s3.BucketNotificationQueueArray{\n\t\t\t\t\u0026s3.BucketNotificationQueueArgs{\n\t\t\t\t\tQueueArn: queueQueue.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterSuffix: pulumi.String(\".log\"),\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.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\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.s3.BucketNotification;\nimport com.pulumi.aws.s3.BucketNotificationArgs;\nimport com.pulumi.aws.s3.inputs.BucketNotificationQueueArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"your-bucket-name\")\n .build());\n\n final var queue = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"*\")\n .identifiers(\"*\")\n .build())\n .actions(\"sqs:SendMessage\")\n .resources(\"arn:aws:sqs:*:*:s3-event-notification-queue\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"ArnEquals\")\n .variable(\"aws:SourceArn\")\n .values(bucket.arn())\n .build())\n .build())\n .build());\n\n var queueQueue = new Queue(\"queueQueue\", QueueArgs.builder()\n .name(\"s3-event-notification-queue\")\n .policy(queue.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult).applyValue(queue -\u003e queue.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json())))\n .build());\n\n var bucketNotification = new BucketNotification(\"bucketNotification\", BucketNotificationArgs.builder()\n .bucket(bucket.id())\n .queues(BucketNotificationQueueArgs.builder()\n .queueArn(queueQueue.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterSuffix(\".log\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n queueQueue:\n type: aws:sqs:Queue\n name: queue\n properties:\n name: s3-event-notification-queue\n policy: ${queue.json}\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: your-bucket-name\n bucketNotification:\n type: aws:s3:BucketNotification\n name: bucket_notification\n properties:\n bucket: ${bucket.id}\n queues:\n - queueArn: ${queueQueue.arn}\n events:\n - s3:ObjectCreated:*\n filterSuffix: .log\nvariables:\n queue:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: '*'\n identifiers:\n - '*'\n actions:\n - sqs:SendMessage\n resources:\n - arn:aws:sqs:*:*:s3-event-notification-queue\n conditions:\n - test: ArnEquals\n variable: aws:SourceArn\n values:\n - ${bucket.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Add notification configuration to Lambda Function\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: [\"lambda.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst iamForLambda = new aws.iam.Role(\"iam_for_lambda\", {\n name: \"iam_for_lambda\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst func = new aws.lambda.Function(\"func\", {\n code: new pulumi.asset.FileArchive(\"your-function.zip\"),\n name: \"example_lambda_name\",\n role: iamForLambda.arn,\n handler: \"exports.example\",\n runtime: aws.lambda.Runtime.Go1dx,\n});\nconst bucket = new aws.s3.BucketV2(\"bucket\", {bucket: \"your-bucket-name\"});\nconst allowBucket = new aws.lambda.Permission(\"allow_bucket\", {\n statementId: \"AllowExecutionFromS3Bucket\",\n action: \"lambda:InvokeFunction\",\n \"function\": func.arn,\n principal: \"s3.amazonaws.com\",\n sourceArn: bucket.arn,\n});\nconst bucketNotification = new aws.s3.BucketNotification(\"bucket_notification\", {\n bucket: bucket.id,\n lambdaFunctions: [{\n lambdaFunctionArn: func.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterPrefix: \"AWSLogs/\",\n filterSuffix: \".log\",\n }],\n}, {\n dependsOn: [allowBucket],\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\": [\"lambda.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\niam_for_lambda = aws.iam.Role(\"iam_for_lambda\",\n name=\"iam_for_lambda\",\n assume_role_policy=assume_role.json)\nfunc = aws.lambda_.Function(\"func\",\n code=pulumi.FileArchive(\"your-function.zip\"),\n name=\"example_lambda_name\",\n role=iam_for_lambda.arn,\n handler=\"exports.example\",\n runtime=aws.lambda_.Runtime.GO1DX)\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"your-bucket-name\")\nallow_bucket = aws.lambda_.Permission(\"allow_bucket\",\n statement_id=\"AllowExecutionFromS3Bucket\",\n action=\"lambda:InvokeFunction\",\n function=func.arn,\n principal=\"s3.amazonaws.com\",\n source_arn=bucket.arn)\nbucket_notification = aws.s3.BucketNotification(\"bucket_notification\",\n bucket=bucket.id,\n lambda_functions=[{\n \"lambda_function_arn\": func.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_prefix\": \"AWSLogs/\",\n \"filter_suffix\": \".log\",\n }],\n opts = pulumi.ResourceOptions(depends_on=[allow_bucket]))\n```\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 \"lambda.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var iamForLambda = new Aws.Iam.Role(\"iam_for_lambda\", new()\n {\n Name = \"iam_for_lambda\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var func = new Aws.Lambda.Function(\"func\", new()\n {\n Code = new FileArchive(\"your-function.zip\"),\n Name = \"example_lambda_name\",\n Role = iamForLambda.Arn,\n Handler = \"exports.example\",\n Runtime = Aws.Lambda.Runtime.Go1dx,\n });\n\n var bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"your-bucket-name\",\n });\n\n var allowBucket = new Aws.Lambda.Permission(\"allow_bucket\", new()\n {\n StatementId = \"AllowExecutionFromS3Bucket\",\n Action = \"lambda:InvokeFunction\",\n Function = func.Arn,\n Principal = \"s3.amazonaws.com\",\n SourceArn = bucket.Arn,\n });\n\n var bucketNotification = new Aws.S3.BucketNotification(\"bucket_notification\", new()\n {\n Bucket = bucket.Id,\n LambdaFunctions = new[]\n {\n new Aws.S3.Inputs.BucketNotificationLambdaFunctionArgs\n {\n LambdaFunctionArn = func.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterPrefix = \"AWSLogs/\",\n FilterSuffix = \".log\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n allowBucket,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\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\tiamForLambda, err := iam.NewRole(ctx, \"iam_for_lambda\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"iam_for_lambda\"),\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 = lambda.NewFunction(ctx, \"func\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"your-function.zip\"),\n\t\t\tName: pulumi.String(\"example_lambda_name\"),\n\t\t\tRole: iamForLambda.Arn,\n\t\t\tHandler: pulumi.String(\"exports.example\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimeGo1dx),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"your-bucket-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tallowBucket, err := lambda.NewPermission(ctx, \"allow_bucket\", \u0026lambda.PermissionArgs{\n\t\t\tStatementId: pulumi.String(\"AllowExecutionFromS3Bucket\"),\n\t\t\tAction: pulumi.String(\"lambda:InvokeFunction\"),\n\t\t\tFunction: _func.Arn,\n\t\t\tPrincipal: pulumi.String(\"s3.amazonaws.com\"),\n\t\t\tSourceArn: bucket.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3.NewBucketNotification(ctx, \"bucket_notification\", \u0026s3.BucketNotificationArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tLambdaFunctions: s3.BucketNotificationLambdaFunctionArray{\n\t\t\t\t\u0026s3.BucketNotificationLambdaFunctionArgs{\n\t\t\t\t\tLambdaFunctionArn: _func.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterPrefix: pulumi.String(\"AWSLogs/\"),\n\t\t\t\t\tFilterSuffix: pulumi.String(\".log\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tallowBucket,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.aws.s3.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.lambda.Permission;\nimport com.pulumi.aws.lambda.PermissionArgs;\nimport com.pulumi.aws.s3.BucketNotification;\nimport com.pulumi.aws.s3.BucketNotificationArgs;\nimport com.pulumi.aws.s3.inputs.BucketNotificationLambdaFunctionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 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 iamForLambda = new Role(\"iamForLambda\", RoleArgs.builder()\n .name(\"iam_for_lambda\")\n .assumeRolePolicy(assumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n var func = new Function(\"func\", FunctionArgs.builder()\n .code(new FileArchive(\"your-function.zip\"))\n .name(\"example_lambda_name\")\n .role(iamForLambda.arn())\n .handler(\"exports.example\")\n .runtime(\"go1.x\")\n .build());\n\n var bucket = new BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"your-bucket-name\")\n .build());\n\n var allowBucket = new Permission(\"allowBucket\", PermissionArgs.builder()\n .statementId(\"AllowExecutionFromS3Bucket\")\n .action(\"lambda:InvokeFunction\")\n .function(func.arn())\n .principal(\"s3.amazonaws.com\")\n .sourceArn(bucket.arn())\n .build());\n\n var bucketNotification = new BucketNotification(\"bucketNotification\", BucketNotificationArgs.builder()\n .bucket(bucket.id())\n .lambdaFunctions(BucketNotificationLambdaFunctionArgs.builder()\n .lambdaFunctionArn(func.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterPrefix(\"AWSLogs/\")\n .filterSuffix(\".log\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(allowBucket)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n iamForLambda:\n type: aws:iam:Role\n name: iam_for_lambda\n properties:\n name: iam_for_lambda\n assumeRolePolicy: ${assumeRole.json}\n allowBucket:\n type: aws:lambda:Permission\n name: allow_bucket\n properties:\n statementId: AllowExecutionFromS3Bucket\n action: lambda:InvokeFunction\n function: ${func.arn}\n principal: s3.amazonaws.com\n sourceArn: ${bucket.arn}\n func:\n type: aws:lambda:Function\n properties:\n code:\n fn::FileArchive: your-function.zip\n name: example_lambda_name\n role: ${iamForLambda.arn}\n handler: exports.example\n runtime: go1.x\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: your-bucket-name\n bucketNotification:\n type: aws:s3:BucketNotification\n name: bucket_notification\n properties:\n bucket: ${bucket.id}\n lambdaFunctions:\n - lambdaFunctionArn: ${func.arn}\n events:\n - s3:ObjectCreated:*\n filterPrefix: AWSLogs/\n filterSuffix: .log\n options:\n dependson:\n - ${allowBucket}\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 - lambda.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Trigger multiple Lambda functions\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: [\"lambda.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst iamForLambda = new aws.iam.Role(\"iam_for_lambda\", {\n name: \"iam_for_lambda\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst func1 = new aws.lambda.Function(\"func1\", {\n code: new pulumi.asset.FileArchive(\"your-function1.zip\"),\n name: \"example_lambda_name1\",\n role: iamForLambda.arn,\n handler: \"exports.example\",\n runtime: aws.lambda.Runtime.Go1dx,\n});\nconst bucket = new aws.s3.BucketV2(\"bucket\", {bucket: \"your-bucket-name\"});\nconst allowBucket1 = new aws.lambda.Permission(\"allow_bucket1\", {\n statementId: \"AllowExecutionFromS3Bucket1\",\n action: \"lambda:InvokeFunction\",\n \"function\": func1.arn,\n principal: \"s3.amazonaws.com\",\n sourceArn: bucket.arn,\n});\nconst func2 = new aws.lambda.Function(\"func2\", {\n code: new pulumi.asset.FileArchive(\"your-function2.zip\"),\n name: \"example_lambda_name2\",\n role: iamForLambda.arn,\n handler: \"exports.example\",\n});\nconst allowBucket2 = new aws.lambda.Permission(\"allow_bucket2\", {\n statementId: \"AllowExecutionFromS3Bucket2\",\n action: \"lambda:InvokeFunction\",\n \"function\": func2.arn,\n principal: \"s3.amazonaws.com\",\n sourceArn: bucket.arn,\n});\nconst bucketNotification = new aws.s3.BucketNotification(\"bucket_notification\", {\n bucket: bucket.id,\n lambdaFunctions: [\n {\n lambdaFunctionArn: func1.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterPrefix: \"AWSLogs/\",\n filterSuffix: \".log\",\n },\n {\n lambdaFunctionArn: func2.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterPrefix: \"OtherLogs/\",\n filterSuffix: \".log\",\n },\n ],\n}, {\n dependsOn: [\n allowBucket1,\n allowBucket2,\n ],\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\": [\"lambda.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\niam_for_lambda = aws.iam.Role(\"iam_for_lambda\",\n name=\"iam_for_lambda\",\n assume_role_policy=assume_role.json)\nfunc1 = aws.lambda_.Function(\"func1\",\n code=pulumi.FileArchive(\"your-function1.zip\"),\n name=\"example_lambda_name1\",\n role=iam_for_lambda.arn,\n handler=\"exports.example\",\n runtime=aws.lambda_.Runtime.GO1DX)\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"your-bucket-name\")\nallow_bucket1 = aws.lambda_.Permission(\"allow_bucket1\",\n statement_id=\"AllowExecutionFromS3Bucket1\",\n action=\"lambda:InvokeFunction\",\n function=func1.arn,\n principal=\"s3.amazonaws.com\",\n source_arn=bucket.arn)\nfunc2 = aws.lambda_.Function(\"func2\",\n code=pulumi.FileArchive(\"your-function2.zip\"),\n name=\"example_lambda_name2\",\n role=iam_for_lambda.arn,\n handler=\"exports.example\")\nallow_bucket2 = aws.lambda_.Permission(\"allow_bucket2\",\n statement_id=\"AllowExecutionFromS3Bucket2\",\n action=\"lambda:InvokeFunction\",\n function=func2.arn,\n principal=\"s3.amazonaws.com\",\n source_arn=bucket.arn)\nbucket_notification = aws.s3.BucketNotification(\"bucket_notification\",\n bucket=bucket.id,\n lambda_functions=[\n {\n \"lambda_function_arn\": func1.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_prefix\": \"AWSLogs/\",\n \"filter_suffix\": \".log\",\n },\n {\n \"lambda_function_arn\": func2.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_prefix\": \"OtherLogs/\",\n \"filter_suffix\": \".log\",\n },\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n allow_bucket1,\n allow_bucket2,\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 \"lambda.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var iamForLambda = new Aws.Iam.Role(\"iam_for_lambda\", new()\n {\n Name = \"iam_for_lambda\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var func1 = new Aws.Lambda.Function(\"func1\", new()\n {\n Code = new FileArchive(\"your-function1.zip\"),\n Name = \"example_lambda_name1\",\n Role = iamForLambda.Arn,\n Handler = \"exports.example\",\n Runtime = Aws.Lambda.Runtime.Go1dx,\n });\n\n var bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"your-bucket-name\",\n });\n\n var allowBucket1 = new Aws.Lambda.Permission(\"allow_bucket1\", new()\n {\n StatementId = \"AllowExecutionFromS3Bucket1\",\n Action = \"lambda:InvokeFunction\",\n Function = func1.Arn,\n Principal = \"s3.amazonaws.com\",\n SourceArn = bucket.Arn,\n });\n\n var func2 = new Aws.Lambda.Function(\"func2\", new()\n {\n Code = new FileArchive(\"your-function2.zip\"),\n Name = \"example_lambda_name2\",\n Role = iamForLambda.Arn,\n Handler = \"exports.example\",\n });\n\n var allowBucket2 = new Aws.Lambda.Permission(\"allow_bucket2\", new()\n {\n StatementId = \"AllowExecutionFromS3Bucket2\",\n Action = \"lambda:InvokeFunction\",\n Function = func2.Arn,\n Principal = \"s3.amazonaws.com\",\n SourceArn = bucket.Arn,\n });\n\n var bucketNotification = new Aws.S3.BucketNotification(\"bucket_notification\", new()\n {\n Bucket = bucket.Id,\n LambdaFunctions = new[]\n {\n new Aws.S3.Inputs.BucketNotificationLambdaFunctionArgs\n {\n LambdaFunctionArn = func1.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterPrefix = \"AWSLogs/\",\n FilterSuffix = \".log\",\n },\n new Aws.S3.Inputs.BucketNotificationLambdaFunctionArgs\n {\n LambdaFunctionArn = func2.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterPrefix = \"OtherLogs/\",\n FilterSuffix = \".log\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n allowBucket1,\n allowBucket2,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\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\tiamForLambda, err := iam.NewRole(ctx, \"iam_for_lambda\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"iam_for_lambda\"),\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\tfunc1, err := lambda.NewFunction(ctx, \"func1\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"your-function1.zip\"),\n\t\t\tName: pulumi.String(\"example_lambda_name1\"),\n\t\t\tRole: iamForLambda.Arn,\n\t\t\tHandler: pulumi.String(\"exports.example\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimeGo1dx),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"your-bucket-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tallowBucket1, err := lambda.NewPermission(ctx, \"allow_bucket1\", \u0026lambda.PermissionArgs{\n\t\t\tStatementId: pulumi.String(\"AllowExecutionFromS3Bucket1\"),\n\t\t\tAction: pulumi.String(\"lambda:InvokeFunction\"),\n\t\t\tFunction: func1.Arn,\n\t\t\tPrincipal: pulumi.String(\"s3.amazonaws.com\"),\n\t\t\tSourceArn: bucket.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunc2, err := lambda.NewFunction(ctx, \"func2\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"your-function2.zip\"),\n\t\t\tName: pulumi.String(\"example_lambda_name2\"),\n\t\t\tRole: iamForLambda.Arn,\n\t\t\tHandler: pulumi.String(\"exports.example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tallowBucket2, err := lambda.NewPermission(ctx, \"allow_bucket2\", \u0026lambda.PermissionArgs{\n\t\t\tStatementId: pulumi.String(\"AllowExecutionFromS3Bucket2\"),\n\t\t\tAction: pulumi.String(\"lambda:InvokeFunction\"),\n\t\t\tFunction: func2.Arn,\n\t\t\tPrincipal: pulumi.String(\"s3.amazonaws.com\"),\n\t\t\tSourceArn: bucket.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3.NewBucketNotification(ctx, \"bucket_notification\", \u0026s3.BucketNotificationArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tLambdaFunctions: s3.BucketNotificationLambdaFunctionArray{\n\t\t\t\t\u0026s3.BucketNotificationLambdaFunctionArgs{\n\t\t\t\t\tLambdaFunctionArn: func1.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterPrefix: pulumi.String(\"AWSLogs/\"),\n\t\t\t\t\tFilterSuffix: pulumi.String(\".log\"),\n\t\t\t\t},\n\t\t\t\t\u0026s3.BucketNotificationLambdaFunctionArgs{\n\t\t\t\t\tLambdaFunctionArn: func2.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterPrefix: pulumi.String(\"OtherLogs/\"),\n\t\t\t\t\tFilterSuffix: pulumi.String(\".log\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tallowBucket1,\n\t\t\tallowBucket2,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.aws.s3.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.lambda.Permission;\nimport com.pulumi.aws.lambda.PermissionArgs;\nimport com.pulumi.aws.s3.BucketNotification;\nimport com.pulumi.aws.s3.BucketNotificationArgs;\nimport com.pulumi.aws.s3.inputs.BucketNotificationLambdaFunctionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 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 iamForLambda = new Role(\"iamForLambda\", RoleArgs.builder()\n .name(\"iam_for_lambda\")\n .assumeRolePolicy(assumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n var func1 = new Function(\"func1\", FunctionArgs.builder()\n .code(new FileArchive(\"your-function1.zip\"))\n .name(\"example_lambda_name1\")\n .role(iamForLambda.arn())\n .handler(\"exports.example\")\n .runtime(\"go1.x\")\n .build());\n\n var bucket = new BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"your-bucket-name\")\n .build());\n\n var allowBucket1 = new Permission(\"allowBucket1\", PermissionArgs.builder()\n .statementId(\"AllowExecutionFromS3Bucket1\")\n .action(\"lambda:InvokeFunction\")\n .function(func1.arn())\n .principal(\"s3.amazonaws.com\")\n .sourceArn(bucket.arn())\n .build());\n\n var func2 = new Function(\"func2\", FunctionArgs.builder()\n .code(new FileArchive(\"your-function2.zip\"))\n .name(\"example_lambda_name2\")\n .role(iamForLambda.arn())\n .handler(\"exports.example\")\n .build());\n\n var allowBucket2 = new Permission(\"allowBucket2\", PermissionArgs.builder()\n .statementId(\"AllowExecutionFromS3Bucket2\")\n .action(\"lambda:InvokeFunction\")\n .function(func2.arn())\n .principal(\"s3.amazonaws.com\")\n .sourceArn(bucket.arn())\n .build());\n\n var bucketNotification = new BucketNotification(\"bucketNotification\", BucketNotificationArgs.builder()\n .bucket(bucket.id())\n .lambdaFunctions( \n BucketNotificationLambdaFunctionArgs.builder()\n .lambdaFunctionArn(func1.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterPrefix(\"AWSLogs/\")\n .filterSuffix(\".log\")\n .build(),\n BucketNotificationLambdaFunctionArgs.builder()\n .lambdaFunctionArn(func2.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterPrefix(\"OtherLogs/\")\n .filterSuffix(\".log\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n allowBucket1,\n allowBucket2)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n iamForLambda:\n type: aws:iam:Role\n name: iam_for_lambda\n properties:\n name: iam_for_lambda\n assumeRolePolicy: ${assumeRole.json}\n allowBucket1:\n type: aws:lambda:Permission\n name: allow_bucket1\n properties:\n statementId: AllowExecutionFromS3Bucket1\n action: lambda:InvokeFunction\n function: ${func1.arn}\n principal: s3.amazonaws.com\n sourceArn: ${bucket.arn}\n func1:\n type: aws:lambda:Function\n properties:\n code:\n fn::FileArchive: your-function1.zip\n name: example_lambda_name1\n role: ${iamForLambda.arn}\n handler: exports.example\n runtime: go1.x\n allowBucket2:\n type: aws:lambda:Permission\n name: allow_bucket2\n properties:\n statementId: AllowExecutionFromS3Bucket2\n action: lambda:InvokeFunction\n function: ${func2.arn}\n principal: s3.amazonaws.com\n sourceArn: ${bucket.arn}\n func2:\n type: aws:lambda:Function\n properties:\n code:\n fn::FileArchive: your-function2.zip\n name: example_lambda_name2\n role: ${iamForLambda.arn}\n handler: exports.example\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: your-bucket-name\n bucketNotification:\n type: aws:s3:BucketNotification\n name: bucket_notification\n properties:\n bucket: ${bucket.id}\n lambdaFunctions:\n - lambdaFunctionArn: ${func1.arn}\n events:\n - s3:ObjectCreated:*\n filterPrefix: AWSLogs/\n filterSuffix: .log\n - lambdaFunctionArn: ${func2.arn}\n events:\n - s3:ObjectCreated:*\n filterPrefix: OtherLogs/\n filterSuffix: .log\n options:\n dependson:\n - ${allowBucket1}\n - ${allowBucket2}\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 - lambda.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Add multiple notification configurations to SQS Queue\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.BucketV2(\"bucket\", {bucket: \"your-bucket-name\"});\nconst queue = aws.iam.getPolicyDocumentOutput({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"*\",\n identifiers: [\"*\"],\n }],\n actions: [\"sqs:SendMessage\"],\n resources: [\"arn:aws:sqs:*:*:s3-event-notification-queue\"],\n conditions: [{\n test: \"ArnEquals\",\n variable: \"aws:SourceArn\",\n values: [bucket.arn],\n }],\n }],\n});\nconst queueQueue = new aws.sqs.Queue(\"queue\", {\n name: \"s3-event-notification-queue\",\n policy: queue.apply(queue =\u003e queue.json),\n});\nconst bucketNotification = new aws.s3.BucketNotification(\"bucket_notification\", {\n bucket: bucket.id,\n queues: [\n {\n id: \"image-upload-event\",\n queueArn: queueQueue.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterPrefix: \"images/\",\n },\n {\n id: \"video-upload-event\",\n queueArn: queueQueue.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterPrefix: \"videos/\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"your-bucket-name\")\nqueue = aws.iam.get_policy_document_output(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"*\",\n \"identifiers\": [\"*\"],\n }],\n \"actions\": [\"sqs:SendMessage\"],\n \"resources\": [\"arn:aws:sqs:*:*:s3-event-notification-queue\"],\n \"conditions\": [{\n \"test\": \"ArnEquals\",\n \"variable\": \"aws:SourceArn\",\n \"values\": [bucket.arn],\n }],\n}])\nqueue_queue = aws.sqs.Queue(\"queue\",\n name=\"s3-event-notification-queue\",\n policy=queue.json)\nbucket_notification = aws.s3.BucketNotification(\"bucket_notification\",\n bucket=bucket.id,\n queues=[\n {\n \"id\": \"image-upload-event\",\n \"queue_arn\": queue_queue.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_prefix\": \"images/\",\n },\n {\n \"id\": \"video-upload-event\",\n \"queue_arn\": queue_queue.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_prefix\": \"videos/\",\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 bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"your-bucket-name\",\n });\n\n var queue = 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 = \"*\",\n Identifiers = new[]\n {\n \"*\",\n },\n },\n },\n Actions = new[]\n {\n \"sqs:SendMessage\",\n },\n Resources = new[]\n {\n \"arn:aws:sqs:*:*:s3-event-notification-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 bucket.Arn,\n },\n },\n },\n },\n },\n });\n\n var queueQueue = new Aws.Sqs.Queue(\"queue\", new()\n {\n Name = \"s3-event-notification-queue\",\n Policy = queue.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var bucketNotification = new Aws.S3.BucketNotification(\"bucket_notification\", new()\n {\n Bucket = bucket.Id,\n Queues = new[]\n {\n new Aws.S3.Inputs.BucketNotificationQueueArgs\n {\n Id = \"image-upload-event\",\n QueueArn = queueQueue.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterPrefix = \"images/\",\n },\n new Aws.S3.Inputs.BucketNotificationQueueArgs\n {\n Id = \"video-upload-event\",\n QueueArn = queueQueue.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterPrefix = \"videos/\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"your-bucket-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tqueue := 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\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"*\"),\n\t\t\t\t\t\t\tIdentifiers: 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\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:*:*:s3-event-notification-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\tbucket.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\tqueueQueue, err := sqs.NewQueue(ctx, \"queue\", \u0026sqs.QueueArgs{\n\t\t\tName: pulumi.String(\"s3-event-notification-queue\"),\n\t\t\tPolicy: pulumi.String(queue.ApplyT(func(queue iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026queue.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 = s3.NewBucketNotification(ctx, \"bucket_notification\", \u0026s3.BucketNotificationArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tQueues: s3.BucketNotificationQueueArray{\n\t\t\t\t\u0026s3.BucketNotificationQueueArgs{\n\t\t\t\t\tId: pulumi.String(\"image-upload-event\"),\n\t\t\t\t\tQueueArn: queueQueue.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterPrefix: pulumi.String(\"images/\"),\n\t\t\t\t},\n\t\t\t\t\u0026s3.BucketNotificationQueueArgs{\n\t\t\t\t\tId: pulumi.String(\"video-upload-event\"),\n\t\t\t\t\tQueueArn: queueQueue.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterPrefix: pulumi.String(\"videos/\"),\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.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\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.s3.BucketNotification;\nimport com.pulumi.aws.s3.BucketNotificationArgs;\nimport com.pulumi.aws.s3.inputs.BucketNotificationQueueArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"your-bucket-name\")\n .build());\n\n final var queue = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"*\")\n .identifiers(\"*\")\n .build())\n .actions(\"sqs:SendMessage\")\n .resources(\"arn:aws:sqs:*:*:s3-event-notification-queue\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"ArnEquals\")\n .variable(\"aws:SourceArn\")\n .values(bucket.arn())\n .build())\n .build())\n .build());\n\n var queueQueue = new Queue(\"queueQueue\", QueueArgs.builder()\n .name(\"s3-event-notification-queue\")\n .policy(queue.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult).applyValue(queue -\u003e queue.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json())))\n .build());\n\n var bucketNotification = new BucketNotification(\"bucketNotification\", BucketNotificationArgs.builder()\n .bucket(bucket.id())\n .queues( \n BucketNotificationQueueArgs.builder()\n .id(\"image-upload-event\")\n .queueArn(queueQueue.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterPrefix(\"images/\")\n .build(),\n BucketNotificationQueueArgs.builder()\n .id(\"video-upload-event\")\n .queueArn(queueQueue.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterPrefix(\"videos/\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n queueQueue:\n type: aws:sqs:Queue\n name: queue\n properties:\n name: s3-event-notification-queue\n policy: ${queue.json}\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: your-bucket-name\n bucketNotification:\n type: aws:s3:BucketNotification\n name: bucket_notification\n properties:\n bucket: ${bucket.id}\n queues:\n - id: image-upload-event\n queueArn: ${queueQueue.arn}\n events:\n - s3:ObjectCreated:*\n filterPrefix: images/\n - id: video-upload-event\n queueArn: ${queueQueue.arn}\n events:\n - s3:ObjectCreated:*\n filterPrefix: videos/\nvariables:\n queue:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: '*'\n identifiers:\n - '*'\n actions:\n - sqs:SendMessage\n resources:\n - arn:aws:sqs:*:*:s3-event-notification-queue\n conditions:\n - test: ArnEquals\n variable: aws:SourceArn\n values:\n - ${bucket.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFor JSON syntax, use an array instead of defining the `queue` key twice.\n\n```json\n{\n\t\"bucket\": \"${aws_s3_bucket.bucket.id}\",\n\t\"queue\": [\n\t\t{\n\t\t\t\"id\": \"image-upload-event\",\n\t\t\t\"queue_arn\": \"${aws_sqs_queue.queue.arn}\",\n\t\t\t\"events\": [\"s3:ObjectCreated:*\"],\n\t\t\t\"filter_prefix\": \"images/\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"video-upload-event\",\n\t\t\t\"queue_arn\": \"${aws_sqs_queue.queue.arn}\",\n\t\t\t\"events\": [\"s3:ObjectCreated:*\"],\n\t\t\t\"filter_prefix\": \"videos/\"\n\t\t}\n\t]\n}\n```\n\n### Emit events to EventBridge\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.BucketV2(\"bucket\", {bucket: \"your-bucket-name\"});\nconst bucketNotification = new aws.s3.BucketNotification(\"bucket_notification\", {\n bucket: bucket.id,\n eventbridge: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"your-bucket-name\")\nbucket_notification = aws.s3.BucketNotification(\"bucket_notification\",\n bucket=bucket.id,\n eventbridge=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 bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"your-bucket-name\",\n });\n\n var bucketNotification = new Aws.S3.BucketNotification(\"bucket_notification\", new()\n {\n Bucket = bucket.Id,\n Eventbridge = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"your-bucket-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3.NewBucketNotification(ctx, \"bucket_notification\", \u0026s3.BucketNotificationArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tEventbridge: 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.s3.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.s3.BucketNotification;\nimport com.pulumi.aws.s3.BucketNotificationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"your-bucket-name\")\n .build());\n\n var bucketNotification = new BucketNotification(\"bucketNotification\", BucketNotificationArgs.builder()\n .bucket(bucket.id())\n .eventbridge(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: your-bucket-name\n bucketNotification:\n type: aws:s3:BucketNotification\n name: bucket_notification\n properties:\n bucket: ${bucket.id}\n eventbridge: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import S3 bucket notification using the `bucket`. For example:\n\n```sh\n$ pulumi import aws:s3/bucketNotification:BucketNotification bucket_notification bucket-name\n```\n", + "description": "Manages a S3 Bucket Notification Configuration. For additional information, see the [Configuring S3 Event Notifications section in the Amazon S3 Developer Guide](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).\n\n\u003e **NOTE:** S3 Buckets only support a single notification configuration resource. Declaring multiple `aws.s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. This resource will overwrite any existing event notifications configured for the S3 bucket it's associated with. See the example \"Trigger multiple Lambda functions\" for an option of how to configure multiple triggers within this resource.\n\n\u003e This resource cannot be used with S3 directory buckets.\n\n## Example Usage\n\n### Add notification configuration to SNS Topic\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.BucketV2(\"bucket\", {bucket: \"your-bucket-name\"});\nconst topic = aws.iam.getPolicyDocumentOutput({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"s3.amazonaws.com\"],\n }],\n actions: [\"SNS:Publish\"],\n resources: [\"arn:aws:sns:*:*:s3-event-notification-topic\"],\n conditions: [{\n test: \"ArnLike\",\n variable: \"aws:SourceArn\",\n values: [bucket.arn],\n }],\n }],\n});\nconst topicTopic = new aws.sns.Topic(\"topic\", {\n name: \"s3-event-notification-topic\",\n policy: topic.apply(topic =\u003e topic.json),\n});\nconst bucketNotification = new aws.s3.BucketNotification(\"bucket_notification\", {\n bucket: bucket.id,\n topics: [{\n topicArn: topicTopic.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterSuffix: \".log\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"your-bucket-name\")\ntopic = aws.iam.get_policy_document_output(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"s3.amazonaws.com\"],\n }],\n \"actions\": [\"SNS:Publish\"],\n \"resources\": [\"arn:aws:sns:*:*:s3-event-notification-topic\"],\n \"conditions\": [{\n \"test\": \"ArnLike\",\n \"variable\": \"aws:SourceArn\",\n \"values\": [bucket.arn],\n }],\n}])\ntopic_topic = aws.sns.Topic(\"topic\",\n name=\"s3-event-notification-topic\",\n policy=topic.json)\nbucket_notification = aws.s3.BucketNotification(\"bucket_notification\",\n bucket=bucket.id,\n topics=[{\n \"topic_arn\": topic_topic.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_suffix\": \".log\",\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 bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"your-bucket-name\",\n });\n\n var topic = 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 \"s3.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"SNS:Publish\",\n },\n Resources = new[]\n {\n \"arn:aws:sns:*:*:s3-event-notification-topic\",\n },\n Conditions = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs\n {\n Test = \"ArnLike\",\n Variable = \"aws:SourceArn\",\n Values = new[]\n {\n bucket.Arn,\n },\n },\n },\n },\n },\n });\n\n var topicTopic = new Aws.Sns.Topic(\"topic\", new()\n {\n Name = \"s3-event-notification-topic\",\n Policy = topic.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var bucketNotification = new Aws.S3.BucketNotification(\"bucket_notification\", new()\n {\n Bucket = bucket.Id,\n Topics = new[]\n {\n new Aws.S3.Inputs.BucketNotificationTopicArgs\n {\n TopicArn = topicTopic.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterSuffix = \".log\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"your-bucket-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic := 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\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(\"s3.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(\"SNS:Publish\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"arn:aws:sns:*:*:s3-event-notification-topic\"),\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(\"ArnLike\"),\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\tbucket.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\ttopicTopic, err := sns.NewTopic(ctx, \"topic\", \u0026sns.TopicArgs{\n\t\t\tName: pulumi.String(\"s3-event-notification-topic\"),\n\t\t\tPolicy: pulumi.String(topic.ApplyT(func(topic iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026topic.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 = s3.NewBucketNotification(ctx, \"bucket_notification\", \u0026s3.BucketNotificationArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tTopics: s3.BucketNotificationTopicArray{\n\t\t\t\t\u0026s3.BucketNotificationTopicArgs{\n\t\t\t\t\tTopicArn: topicTopic.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterSuffix: pulumi.String(\".log\"),\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.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\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.s3.BucketNotification;\nimport com.pulumi.aws.s3.BucketNotificationArgs;\nimport com.pulumi.aws.s3.inputs.BucketNotificationTopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"your-bucket-name\")\n .build());\n\n final var topic = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"s3.amazonaws.com\")\n .build())\n .actions(\"SNS:Publish\")\n .resources(\"arn:aws:sns:*:*:s3-event-notification-topic\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"ArnLike\")\n .variable(\"aws:SourceArn\")\n .values(bucket.arn())\n .build())\n .build())\n .build());\n\n var topicTopic = new Topic(\"topicTopic\", TopicArgs.builder()\n .name(\"s3-event-notification-topic\")\n .policy(topic.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult).applyValue(topic -\u003e topic.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json())))\n .build());\n\n var bucketNotification = new BucketNotification(\"bucketNotification\", BucketNotificationArgs.builder()\n .bucket(bucket.id())\n .topics(BucketNotificationTopicArgs.builder()\n .topicArn(topicTopic.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterSuffix(\".log\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n topicTopic:\n type: aws:sns:Topic\n name: topic\n properties:\n name: s3-event-notification-topic\n policy: ${topic.json}\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: your-bucket-name\n bucketNotification:\n type: aws:s3:BucketNotification\n name: bucket_notification\n properties:\n bucket: ${bucket.id}\n topics:\n - topicArn: ${topicTopic.arn}\n events:\n - s3:ObjectCreated:*\n filterSuffix: .log\nvariables:\n topic:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - s3.amazonaws.com\n actions:\n - SNS:Publish\n resources:\n - arn:aws:sns:*:*:s3-event-notification-topic\n conditions:\n - test: ArnLike\n variable: aws:SourceArn\n values:\n - ${bucket.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Add notification configuration to SQS Queue\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.BucketV2(\"bucket\", {bucket: \"your-bucket-name\"});\nconst queue = aws.iam.getPolicyDocumentOutput({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"*\",\n identifiers: [\"*\"],\n }],\n actions: [\"sqs:SendMessage\"],\n resources: [\"arn:aws:sqs:*:*:s3-event-notification-queue\"],\n conditions: [{\n test: \"ArnEquals\",\n variable: \"aws:SourceArn\",\n values: [bucket.arn],\n }],\n }],\n});\nconst queueQueue = new aws.sqs.Queue(\"queue\", {\n name: \"s3-event-notification-queue\",\n policy: queue.apply(queue =\u003e queue.json),\n});\nconst bucketNotification = new aws.s3.BucketNotification(\"bucket_notification\", {\n bucket: bucket.id,\n queues: [{\n queueArn: queueQueue.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterSuffix: \".log\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"your-bucket-name\")\nqueue = aws.iam.get_policy_document_output(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"*\",\n \"identifiers\": [\"*\"],\n }],\n \"actions\": [\"sqs:SendMessage\"],\n \"resources\": [\"arn:aws:sqs:*:*:s3-event-notification-queue\"],\n \"conditions\": [{\n \"test\": \"ArnEquals\",\n \"variable\": \"aws:SourceArn\",\n \"values\": [bucket.arn],\n }],\n}])\nqueue_queue = aws.sqs.Queue(\"queue\",\n name=\"s3-event-notification-queue\",\n policy=queue.json)\nbucket_notification = aws.s3.BucketNotification(\"bucket_notification\",\n bucket=bucket.id,\n queues=[{\n \"queue_arn\": queue_queue.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_suffix\": \".log\",\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 bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"your-bucket-name\",\n });\n\n var queue = 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 = \"*\",\n Identifiers = new[]\n {\n \"*\",\n },\n },\n },\n Actions = new[]\n {\n \"sqs:SendMessage\",\n },\n Resources = new[]\n {\n \"arn:aws:sqs:*:*:s3-event-notification-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 bucket.Arn,\n },\n },\n },\n },\n },\n });\n\n var queueQueue = new Aws.Sqs.Queue(\"queue\", new()\n {\n Name = \"s3-event-notification-queue\",\n Policy = queue.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var bucketNotification = new Aws.S3.BucketNotification(\"bucket_notification\", new()\n {\n Bucket = bucket.Id,\n Queues = new[]\n {\n new Aws.S3.Inputs.BucketNotificationQueueArgs\n {\n QueueArn = queueQueue.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterSuffix = \".log\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"your-bucket-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tqueue := 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\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"*\"),\n\t\t\t\t\t\t\tIdentifiers: 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\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:*:*:s3-event-notification-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\tbucket.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\tqueueQueue, err := sqs.NewQueue(ctx, \"queue\", \u0026sqs.QueueArgs{\n\t\t\tName: pulumi.String(\"s3-event-notification-queue\"),\n\t\t\tPolicy: pulumi.String(queue.ApplyT(func(queue iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026queue.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 = s3.NewBucketNotification(ctx, \"bucket_notification\", \u0026s3.BucketNotificationArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tQueues: s3.BucketNotificationQueueArray{\n\t\t\t\t\u0026s3.BucketNotificationQueueArgs{\n\t\t\t\t\tQueueArn: queueQueue.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterSuffix: pulumi.String(\".log\"),\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.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\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.s3.BucketNotification;\nimport com.pulumi.aws.s3.BucketNotificationArgs;\nimport com.pulumi.aws.s3.inputs.BucketNotificationQueueArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"your-bucket-name\")\n .build());\n\n final var queue = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"*\")\n .identifiers(\"*\")\n .build())\n .actions(\"sqs:SendMessage\")\n .resources(\"arn:aws:sqs:*:*:s3-event-notification-queue\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"ArnEquals\")\n .variable(\"aws:SourceArn\")\n .values(bucket.arn())\n .build())\n .build())\n .build());\n\n var queueQueue = new Queue(\"queueQueue\", QueueArgs.builder()\n .name(\"s3-event-notification-queue\")\n .policy(queue.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult).applyValue(queue -\u003e queue.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json())))\n .build());\n\n var bucketNotification = new BucketNotification(\"bucketNotification\", BucketNotificationArgs.builder()\n .bucket(bucket.id())\n .queues(BucketNotificationQueueArgs.builder()\n .queueArn(queueQueue.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterSuffix(\".log\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n queueQueue:\n type: aws:sqs:Queue\n name: queue\n properties:\n name: s3-event-notification-queue\n policy: ${queue.json}\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: your-bucket-name\n bucketNotification:\n type: aws:s3:BucketNotification\n name: bucket_notification\n properties:\n bucket: ${bucket.id}\n queues:\n - queueArn: ${queueQueue.arn}\n events:\n - s3:ObjectCreated:*\n filterSuffix: .log\nvariables:\n queue:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: '*'\n identifiers:\n - '*'\n actions:\n - sqs:SendMessage\n resources:\n - arn:aws:sqs:*:*:s3-event-notification-queue\n conditions:\n - test: ArnEquals\n variable: aws:SourceArn\n values:\n - ${bucket.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Add notification configuration to Lambda Function\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: [\"lambda.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst iamForLambda = new aws.iam.Role(\"iam_for_lambda\", {\n name: \"iam_for_lambda\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst func = new aws.lambda.Function(\"func\", {\n code: new pulumi.asset.FileArchive(\"your-function.zip\"),\n name: \"example_lambda_name\",\n role: iamForLambda.arn,\n handler: \"exports.example\",\n runtime: aws.lambda.Runtime.Go1dx,\n});\nconst bucket = new aws.s3.BucketV2(\"bucket\", {bucket: \"your-bucket-name\"});\nconst allowBucket = new aws.lambda.Permission(\"allow_bucket\", {\n statementId: \"AllowExecutionFromS3Bucket\",\n action: \"lambda:InvokeFunction\",\n \"function\": func.arn,\n principal: \"s3.amazonaws.com\",\n sourceArn: bucket.arn,\n});\nconst bucketNotification = new aws.s3.BucketNotification(\"bucket_notification\", {\n bucket: bucket.id,\n lambdaFunctions: [{\n lambdaFunctionArn: func.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterPrefix: \"AWSLogs/\",\n filterSuffix: \".log\",\n }],\n}, {\n dependsOn: [allowBucket],\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\": [\"lambda.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\niam_for_lambda = aws.iam.Role(\"iam_for_lambda\",\n name=\"iam_for_lambda\",\n assume_role_policy=assume_role.json)\nfunc = aws.lambda_.Function(\"func\",\n code=pulumi.FileArchive(\"your-function.zip\"),\n name=\"example_lambda_name\",\n role=iam_for_lambda.arn,\n handler=\"exports.example\",\n runtime=aws.lambda_.Runtime.GO1DX)\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"your-bucket-name\")\nallow_bucket = aws.lambda_.Permission(\"allow_bucket\",\n statement_id=\"AllowExecutionFromS3Bucket\",\n action=\"lambda:InvokeFunction\",\n function=func.arn,\n principal=\"s3.amazonaws.com\",\n source_arn=bucket.arn)\nbucket_notification = aws.s3.BucketNotification(\"bucket_notification\",\n bucket=bucket.id,\n lambda_functions=[{\n \"lambda_function_arn\": func.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_prefix\": \"AWSLogs/\",\n \"filter_suffix\": \".log\",\n }],\n opts = pulumi.ResourceOptions(depends_on=[allow_bucket]))\n```\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 \"lambda.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var iamForLambda = new Aws.Iam.Role(\"iam_for_lambda\", new()\n {\n Name = \"iam_for_lambda\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var func = new Aws.Lambda.Function(\"func\", new()\n {\n Code = new FileArchive(\"your-function.zip\"),\n Name = \"example_lambda_name\",\n Role = iamForLambda.Arn,\n Handler = \"exports.example\",\n Runtime = Aws.Lambda.Runtime.Go1dx,\n });\n\n var bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"your-bucket-name\",\n });\n\n var allowBucket = new Aws.Lambda.Permission(\"allow_bucket\", new()\n {\n StatementId = \"AllowExecutionFromS3Bucket\",\n Action = \"lambda:InvokeFunction\",\n Function = func.Arn,\n Principal = \"s3.amazonaws.com\",\n SourceArn = bucket.Arn,\n });\n\n var bucketNotification = new Aws.S3.BucketNotification(\"bucket_notification\", new()\n {\n Bucket = bucket.Id,\n LambdaFunctions = new[]\n {\n new Aws.S3.Inputs.BucketNotificationLambdaFunctionArgs\n {\n LambdaFunctionArn = func.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterPrefix = \"AWSLogs/\",\n FilterSuffix = \".log\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n allowBucket,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\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\tiamForLambda, err := iam.NewRole(ctx, \"iam_for_lambda\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"iam_for_lambda\"),\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 = lambda.NewFunction(ctx, \"func\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"your-function.zip\"),\n\t\t\tName: pulumi.String(\"example_lambda_name\"),\n\t\t\tRole: iamForLambda.Arn,\n\t\t\tHandler: pulumi.String(\"exports.example\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimeGo1dx),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"your-bucket-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tallowBucket, err := lambda.NewPermission(ctx, \"allow_bucket\", \u0026lambda.PermissionArgs{\n\t\t\tStatementId: pulumi.String(\"AllowExecutionFromS3Bucket\"),\n\t\t\tAction: pulumi.String(\"lambda:InvokeFunction\"),\n\t\t\tFunction: _func.Arn,\n\t\t\tPrincipal: pulumi.String(\"s3.amazonaws.com\"),\n\t\t\tSourceArn: bucket.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3.NewBucketNotification(ctx, \"bucket_notification\", \u0026s3.BucketNotificationArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tLambdaFunctions: s3.BucketNotificationLambdaFunctionArray{\n\t\t\t\t\u0026s3.BucketNotificationLambdaFunctionArgs{\n\t\t\t\t\tLambdaFunctionArn: _func.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterPrefix: pulumi.String(\"AWSLogs/\"),\n\t\t\t\t\tFilterSuffix: pulumi.String(\".log\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tallowBucket,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.aws.s3.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.lambda.Permission;\nimport com.pulumi.aws.lambda.PermissionArgs;\nimport com.pulumi.aws.s3.BucketNotification;\nimport com.pulumi.aws.s3.BucketNotificationArgs;\nimport com.pulumi.aws.s3.inputs.BucketNotificationLambdaFunctionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 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 iamForLambda = new Role(\"iamForLambda\", RoleArgs.builder()\n .name(\"iam_for_lambda\")\n .assumeRolePolicy(assumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n var func = new Function(\"func\", FunctionArgs.builder()\n .code(new FileArchive(\"your-function.zip\"))\n .name(\"example_lambda_name\")\n .role(iamForLambda.arn())\n .handler(\"exports.example\")\n .runtime(\"go1.x\")\n .build());\n\n var bucket = new BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"your-bucket-name\")\n .build());\n\n var allowBucket = new Permission(\"allowBucket\", PermissionArgs.builder()\n .statementId(\"AllowExecutionFromS3Bucket\")\n .action(\"lambda:InvokeFunction\")\n .function(func.arn())\n .principal(\"s3.amazonaws.com\")\n .sourceArn(bucket.arn())\n .build());\n\n var bucketNotification = new BucketNotification(\"bucketNotification\", BucketNotificationArgs.builder()\n .bucket(bucket.id())\n .lambdaFunctions(BucketNotificationLambdaFunctionArgs.builder()\n .lambdaFunctionArn(func.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterPrefix(\"AWSLogs/\")\n .filterSuffix(\".log\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(allowBucket)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n iamForLambda:\n type: aws:iam:Role\n name: iam_for_lambda\n properties:\n name: iam_for_lambda\n assumeRolePolicy: ${assumeRole.json}\n allowBucket:\n type: aws:lambda:Permission\n name: allow_bucket\n properties:\n statementId: AllowExecutionFromS3Bucket\n action: lambda:InvokeFunction\n function: ${func.arn}\n principal: s3.amazonaws.com\n sourceArn: ${bucket.arn}\n func:\n type: aws:lambda:Function\n properties:\n code:\n fn::FileArchive: your-function.zip\n name: example_lambda_name\n role: ${iamForLambda.arn}\n handler: exports.example\n runtime: go1.x\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: your-bucket-name\n bucketNotification:\n type: aws:s3:BucketNotification\n name: bucket_notification\n properties:\n bucket: ${bucket.id}\n lambdaFunctions:\n - lambdaFunctionArn: ${func.arn}\n events:\n - s3:ObjectCreated:*\n filterPrefix: AWSLogs/\n filterSuffix: .log\n options:\n dependson:\n - ${allowBucket}\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 - lambda.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Trigger multiple Lambda functions\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: [\"lambda.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst iamForLambda = new aws.iam.Role(\"iam_for_lambda\", {\n name: \"iam_for_lambda\",\n assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json),\n});\nconst func1 = new aws.lambda.Function(\"func1\", {\n code: new pulumi.asset.FileArchive(\"your-function1.zip\"),\n name: \"example_lambda_name1\",\n role: iamForLambda.arn,\n handler: \"exports.example\",\n runtime: aws.lambda.Runtime.Go1dx,\n});\nconst bucket = new aws.s3.BucketV2(\"bucket\", {bucket: \"your-bucket-name\"});\nconst allowBucket1 = new aws.lambda.Permission(\"allow_bucket1\", {\n statementId: \"AllowExecutionFromS3Bucket1\",\n action: \"lambda:InvokeFunction\",\n \"function\": func1.arn,\n principal: \"s3.amazonaws.com\",\n sourceArn: bucket.arn,\n});\nconst func2 = new aws.lambda.Function(\"func2\", {\n code: new pulumi.asset.FileArchive(\"your-function2.zip\"),\n name: \"example_lambda_name2\",\n role: iamForLambda.arn,\n handler: \"exports.example\",\n});\nconst allowBucket2 = new aws.lambda.Permission(\"allow_bucket2\", {\n statementId: \"AllowExecutionFromS3Bucket2\",\n action: \"lambda:InvokeFunction\",\n \"function\": func2.arn,\n principal: \"s3.amazonaws.com\",\n sourceArn: bucket.arn,\n});\nconst bucketNotification = new aws.s3.BucketNotification(\"bucket_notification\", {\n bucket: bucket.id,\n lambdaFunctions: [\n {\n lambdaFunctionArn: func1.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterPrefix: \"AWSLogs/\",\n filterSuffix: \".log\",\n },\n {\n lambdaFunctionArn: func2.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterPrefix: \"OtherLogs/\",\n filterSuffix: \".log\",\n },\n ],\n}, {\n dependsOn: [\n allowBucket1,\n allowBucket2,\n ],\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\": [\"lambda.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\niam_for_lambda = aws.iam.Role(\"iam_for_lambda\",\n name=\"iam_for_lambda\",\n assume_role_policy=assume_role.json)\nfunc1 = aws.lambda_.Function(\"func1\",\n code=pulumi.FileArchive(\"your-function1.zip\"),\n name=\"example_lambda_name1\",\n role=iam_for_lambda.arn,\n handler=\"exports.example\",\n runtime=aws.lambda_.Runtime.GO1DX)\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"your-bucket-name\")\nallow_bucket1 = aws.lambda_.Permission(\"allow_bucket1\",\n statement_id=\"AllowExecutionFromS3Bucket1\",\n action=\"lambda:InvokeFunction\",\n function=func1.arn,\n principal=\"s3.amazonaws.com\",\n source_arn=bucket.arn)\nfunc2 = aws.lambda_.Function(\"func2\",\n code=pulumi.FileArchive(\"your-function2.zip\"),\n name=\"example_lambda_name2\",\n role=iam_for_lambda.arn,\n handler=\"exports.example\")\nallow_bucket2 = aws.lambda_.Permission(\"allow_bucket2\",\n statement_id=\"AllowExecutionFromS3Bucket2\",\n action=\"lambda:InvokeFunction\",\n function=func2.arn,\n principal=\"s3.amazonaws.com\",\n source_arn=bucket.arn)\nbucket_notification = aws.s3.BucketNotification(\"bucket_notification\",\n bucket=bucket.id,\n lambda_functions=[\n {\n \"lambda_function_arn\": func1.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_prefix\": \"AWSLogs/\",\n \"filter_suffix\": \".log\",\n },\n {\n \"lambda_function_arn\": func2.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_prefix\": \"OtherLogs/\",\n \"filter_suffix\": \".log\",\n },\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n allow_bucket1,\n allow_bucket2,\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 \"lambda.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var iamForLambda = new Aws.Iam.Role(\"iam_for_lambda\", new()\n {\n Name = \"iam_for_lambda\",\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var func1 = new Aws.Lambda.Function(\"func1\", new()\n {\n Code = new FileArchive(\"your-function1.zip\"),\n Name = \"example_lambda_name1\",\n Role = iamForLambda.Arn,\n Handler = \"exports.example\",\n Runtime = Aws.Lambda.Runtime.Go1dx,\n });\n\n var bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"your-bucket-name\",\n });\n\n var allowBucket1 = new Aws.Lambda.Permission(\"allow_bucket1\", new()\n {\n StatementId = \"AllowExecutionFromS3Bucket1\",\n Action = \"lambda:InvokeFunction\",\n Function = func1.Arn,\n Principal = \"s3.amazonaws.com\",\n SourceArn = bucket.Arn,\n });\n\n var func2 = new Aws.Lambda.Function(\"func2\", new()\n {\n Code = new FileArchive(\"your-function2.zip\"),\n Name = \"example_lambda_name2\",\n Role = iamForLambda.Arn,\n Handler = \"exports.example\",\n });\n\n var allowBucket2 = new Aws.Lambda.Permission(\"allow_bucket2\", new()\n {\n StatementId = \"AllowExecutionFromS3Bucket2\",\n Action = \"lambda:InvokeFunction\",\n Function = func2.Arn,\n Principal = \"s3.amazonaws.com\",\n SourceArn = bucket.Arn,\n });\n\n var bucketNotification = new Aws.S3.BucketNotification(\"bucket_notification\", new()\n {\n Bucket = bucket.Id,\n LambdaFunctions = new[]\n {\n new Aws.S3.Inputs.BucketNotificationLambdaFunctionArgs\n {\n LambdaFunctionArn = func1.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterPrefix = \"AWSLogs/\",\n FilterSuffix = \".log\",\n },\n new Aws.S3.Inputs.BucketNotificationLambdaFunctionArgs\n {\n LambdaFunctionArn = func2.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterPrefix = \"OtherLogs/\",\n FilterSuffix = \".log\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n allowBucket1,\n allowBucket2,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\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\tiamForLambda, err := iam.NewRole(ctx, \"iam_for_lambda\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"iam_for_lambda\"),\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\tfunc1, err := lambda.NewFunction(ctx, \"func1\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"your-function1.zip\"),\n\t\t\tName: pulumi.String(\"example_lambda_name1\"),\n\t\t\tRole: iamForLambda.Arn,\n\t\t\tHandler: pulumi.String(\"exports.example\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimeGo1dx),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"your-bucket-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tallowBucket1, err := lambda.NewPermission(ctx, \"allow_bucket1\", \u0026lambda.PermissionArgs{\n\t\t\tStatementId: pulumi.String(\"AllowExecutionFromS3Bucket1\"),\n\t\t\tAction: pulumi.String(\"lambda:InvokeFunction\"),\n\t\t\tFunction: func1.Arn,\n\t\t\tPrincipal: pulumi.String(\"s3.amazonaws.com\"),\n\t\t\tSourceArn: bucket.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunc2, err := lambda.NewFunction(ctx, \"func2\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"your-function2.zip\"),\n\t\t\tName: pulumi.String(\"example_lambda_name2\"),\n\t\t\tRole: iamForLambda.Arn,\n\t\t\tHandler: pulumi.String(\"exports.example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tallowBucket2, err := lambda.NewPermission(ctx, \"allow_bucket2\", \u0026lambda.PermissionArgs{\n\t\t\tStatementId: pulumi.String(\"AllowExecutionFromS3Bucket2\"),\n\t\t\tAction: pulumi.String(\"lambda:InvokeFunction\"),\n\t\t\tFunction: func2.Arn,\n\t\t\tPrincipal: pulumi.String(\"s3.amazonaws.com\"),\n\t\t\tSourceArn: bucket.Arn,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3.NewBucketNotification(ctx, \"bucket_notification\", \u0026s3.BucketNotificationArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tLambdaFunctions: s3.BucketNotificationLambdaFunctionArray{\n\t\t\t\t\u0026s3.BucketNotificationLambdaFunctionArgs{\n\t\t\t\t\tLambdaFunctionArn: func1.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterPrefix: pulumi.String(\"AWSLogs/\"),\n\t\t\t\t\tFilterSuffix: pulumi.String(\".log\"),\n\t\t\t\t},\n\t\t\t\t\u0026s3.BucketNotificationLambdaFunctionArgs{\n\t\t\t\t\tLambdaFunctionArn: func2.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterPrefix: pulumi.String(\"OtherLogs/\"),\n\t\t\t\t\tFilterSuffix: pulumi.String(\".log\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tallowBucket1,\n\t\t\tallowBucket2,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.aws.s3.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.lambda.Permission;\nimport com.pulumi.aws.lambda.PermissionArgs;\nimport com.pulumi.aws.s3.BucketNotification;\nimport com.pulumi.aws.s3.BucketNotificationArgs;\nimport com.pulumi.aws.s3.inputs.BucketNotificationLambdaFunctionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 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 iamForLambda = new Role(\"iamForLambda\", RoleArgs.builder()\n .name(\"iam_for_lambda\")\n .assumeRolePolicy(assumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n var func1 = new Function(\"func1\", FunctionArgs.builder()\n .code(new FileArchive(\"your-function1.zip\"))\n .name(\"example_lambda_name1\")\n .role(iamForLambda.arn())\n .handler(\"exports.example\")\n .runtime(\"go1.x\")\n .build());\n\n var bucket = new BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"your-bucket-name\")\n .build());\n\n var allowBucket1 = new Permission(\"allowBucket1\", PermissionArgs.builder()\n .statementId(\"AllowExecutionFromS3Bucket1\")\n .action(\"lambda:InvokeFunction\")\n .function(func1.arn())\n .principal(\"s3.amazonaws.com\")\n .sourceArn(bucket.arn())\n .build());\n\n var func2 = new Function(\"func2\", FunctionArgs.builder()\n .code(new FileArchive(\"your-function2.zip\"))\n .name(\"example_lambda_name2\")\n .role(iamForLambda.arn())\n .handler(\"exports.example\")\n .build());\n\n var allowBucket2 = new Permission(\"allowBucket2\", PermissionArgs.builder()\n .statementId(\"AllowExecutionFromS3Bucket2\")\n .action(\"lambda:InvokeFunction\")\n .function(func2.arn())\n .principal(\"s3.amazonaws.com\")\n .sourceArn(bucket.arn())\n .build());\n\n var bucketNotification = new BucketNotification(\"bucketNotification\", BucketNotificationArgs.builder()\n .bucket(bucket.id())\n .lambdaFunctions( \n BucketNotificationLambdaFunctionArgs.builder()\n .lambdaFunctionArn(func1.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterPrefix(\"AWSLogs/\")\n .filterSuffix(\".log\")\n .build(),\n BucketNotificationLambdaFunctionArgs.builder()\n .lambdaFunctionArn(func2.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterPrefix(\"OtherLogs/\")\n .filterSuffix(\".log\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n allowBucket1,\n allowBucket2)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n iamForLambda:\n type: aws:iam:Role\n name: iam_for_lambda\n properties:\n name: iam_for_lambda\n assumeRolePolicy: ${assumeRole.json}\n allowBucket1:\n type: aws:lambda:Permission\n name: allow_bucket1\n properties:\n statementId: AllowExecutionFromS3Bucket1\n action: lambda:InvokeFunction\n function: ${func1.arn}\n principal: s3.amazonaws.com\n sourceArn: ${bucket.arn}\n func1:\n type: aws:lambda:Function\n properties:\n code:\n fn::FileArchive: your-function1.zip\n name: example_lambda_name1\n role: ${iamForLambda.arn}\n handler: exports.example\n runtime: go1.x\n allowBucket2:\n type: aws:lambda:Permission\n name: allow_bucket2\n properties:\n statementId: AllowExecutionFromS3Bucket2\n action: lambda:InvokeFunction\n function: ${func2.arn}\n principal: s3.amazonaws.com\n sourceArn: ${bucket.arn}\n func2:\n type: aws:lambda:Function\n properties:\n code:\n fn::FileArchive: your-function2.zip\n name: example_lambda_name2\n role: ${iamForLambda.arn}\n handler: exports.example\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: your-bucket-name\n bucketNotification:\n type: aws:s3:BucketNotification\n name: bucket_notification\n properties:\n bucket: ${bucket.id}\n lambdaFunctions:\n - lambdaFunctionArn: ${func1.arn}\n events:\n - s3:ObjectCreated:*\n filterPrefix: AWSLogs/\n filterSuffix: .log\n - lambdaFunctionArn: ${func2.arn}\n events:\n - s3:ObjectCreated:*\n filterPrefix: OtherLogs/\n filterSuffix: .log\n options:\n dependson:\n - ${allowBucket1}\n - ${allowBucket2}\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 - lambda.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Add multiple notification configurations to SQS Queue\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.BucketV2(\"bucket\", {bucket: \"your-bucket-name\"});\nconst queue = aws.iam.getPolicyDocumentOutput({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"*\",\n identifiers: [\"*\"],\n }],\n actions: [\"sqs:SendMessage\"],\n resources: [\"arn:aws:sqs:*:*:s3-event-notification-queue\"],\n conditions: [{\n test: \"ArnEquals\",\n variable: \"aws:SourceArn\",\n values: [bucket.arn],\n }],\n }],\n});\nconst queueQueue = new aws.sqs.Queue(\"queue\", {\n name: \"s3-event-notification-queue\",\n policy: queue.apply(queue =\u003e queue.json),\n});\nconst bucketNotification = new aws.s3.BucketNotification(\"bucket_notification\", {\n bucket: bucket.id,\n queues: [\n {\n id: \"image-upload-event\",\n queueArn: queueQueue.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterPrefix: \"images/\",\n },\n {\n id: \"video-upload-event\",\n queueArn: queueQueue.arn,\n events: [\"s3:ObjectCreated:*\"],\n filterPrefix: \"videos/\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"your-bucket-name\")\nqueue = aws.iam.get_policy_document_output(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"*\",\n \"identifiers\": [\"*\"],\n }],\n \"actions\": [\"sqs:SendMessage\"],\n \"resources\": [\"arn:aws:sqs:*:*:s3-event-notification-queue\"],\n \"conditions\": [{\n \"test\": \"ArnEquals\",\n \"variable\": \"aws:SourceArn\",\n \"values\": [bucket.arn],\n }],\n}])\nqueue_queue = aws.sqs.Queue(\"queue\",\n name=\"s3-event-notification-queue\",\n policy=queue.json)\nbucket_notification = aws.s3.BucketNotification(\"bucket_notification\",\n bucket=bucket.id,\n queues=[\n {\n \"id\": \"image-upload-event\",\n \"queue_arn\": queue_queue.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_prefix\": \"images/\",\n },\n {\n \"id\": \"video-upload-event\",\n \"queue_arn\": queue_queue.arn,\n \"events\": [\"s3:ObjectCreated:*\"],\n \"filter_prefix\": \"videos/\",\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 bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"your-bucket-name\",\n });\n\n var queue = 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 = \"*\",\n Identifiers = new[]\n {\n \"*\",\n },\n },\n },\n Actions = new[]\n {\n \"sqs:SendMessage\",\n },\n Resources = new[]\n {\n \"arn:aws:sqs:*:*:s3-event-notification-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 bucket.Arn,\n },\n },\n },\n },\n },\n });\n\n var queueQueue = new Aws.Sqs.Queue(\"queue\", new()\n {\n Name = \"s3-event-notification-queue\",\n Policy = queue.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var bucketNotification = new Aws.S3.BucketNotification(\"bucket_notification\", new()\n {\n Bucket = bucket.Id,\n Queues = new[]\n {\n new Aws.S3.Inputs.BucketNotificationQueueArgs\n {\n Id = \"image-upload-event\",\n QueueArn = queueQueue.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterPrefix = \"images/\",\n },\n new Aws.S3.Inputs.BucketNotificationQueueArgs\n {\n Id = \"video-upload-event\",\n QueueArn = queueQueue.Arn,\n Events = new[]\n {\n \"s3:ObjectCreated:*\",\n },\n FilterPrefix = \"videos/\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"your-bucket-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tqueue := 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\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"*\"),\n\t\t\t\t\t\t\tIdentifiers: 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\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:*:*:s3-event-notification-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\tbucket.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\tqueueQueue, err := sqs.NewQueue(ctx, \"queue\", \u0026sqs.QueueArgs{\n\t\t\tName: pulumi.String(\"s3-event-notification-queue\"),\n\t\t\tPolicy: pulumi.String(queue.ApplyT(func(queue iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026queue.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 = s3.NewBucketNotification(ctx, \"bucket_notification\", \u0026s3.BucketNotificationArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tQueues: s3.BucketNotificationQueueArray{\n\t\t\t\t\u0026s3.BucketNotificationQueueArgs{\n\t\t\t\t\tId: pulumi.String(\"image-upload-event\"),\n\t\t\t\t\tQueueArn: queueQueue.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterPrefix: pulumi.String(\"images/\"),\n\t\t\t\t},\n\t\t\t\t\u0026s3.BucketNotificationQueueArgs{\n\t\t\t\t\tId: pulumi.String(\"video-upload-event\"),\n\t\t\t\t\tQueueArn: queueQueue.Arn,\n\t\t\t\t\tEvents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ObjectCreated:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilterPrefix: pulumi.String(\"videos/\"),\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.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\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.s3.BucketNotification;\nimport com.pulumi.aws.s3.BucketNotificationArgs;\nimport com.pulumi.aws.s3.inputs.BucketNotificationQueueArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"your-bucket-name\")\n .build());\n\n final var queue = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"*\")\n .identifiers(\"*\")\n .build())\n .actions(\"sqs:SendMessage\")\n .resources(\"arn:aws:sqs:*:*:s3-event-notification-queue\")\n .conditions(GetPolicyDocumentStatementConditionArgs.builder()\n .test(\"ArnEquals\")\n .variable(\"aws:SourceArn\")\n .values(bucket.arn())\n .build())\n .build())\n .build());\n\n var queueQueue = new Queue(\"queueQueue\", QueueArgs.builder()\n .name(\"s3-event-notification-queue\")\n .policy(queue.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult).applyValue(queue -\u003e queue.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json())))\n .build());\n\n var bucketNotification = new BucketNotification(\"bucketNotification\", BucketNotificationArgs.builder()\n .bucket(bucket.id())\n .queues( \n BucketNotificationQueueArgs.builder()\n .id(\"image-upload-event\")\n .queueArn(queueQueue.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterPrefix(\"images/\")\n .build(),\n BucketNotificationQueueArgs.builder()\n .id(\"video-upload-event\")\n .queueArn(queueQueue.arn())\n .events(\"s3:ObjectCreated:*\")\n .filterPrefix(\"videos/\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n queueQueue:\n type: aws:sqs:Queue\n name: queue\n properties:\n name: s3-event-notification-queue\n policy: ${queue.json}\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: your-bucket-name\n bucketNotification:\n type: aws:s3:BucketNotification\n name: bucket_notification\n properties:\n bucket: ${bucket.id}\n queues:\n - id: image-upload-event\n queueArn: ${queueQueue.arn}\n events:\n - s3:ObjectCreated:*\n filterPrefix: images/\n - id: video-upload-event\n queueArn: ${queueQueue.arn}\n events:\n - s3:ObjectCreated:*\n filterPrefix: videos/\nvariables:\n queue:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: '*'\n identifiers:\n - '*'\n actions:\n - sqs:SendMessage\n resources:\n - arn:aws:sqs:*:*:s3-event-notification-queue\n conditions:\n - test: ArnEquals\n variable: aws:SourceArn\n values:\n - ${bucket.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFor JSON syntax, use an array instead of defining the `queue` key twice.\n\n```json\n{\n\t\"bucket\": \"${aws_s3_bucket.bucket.id}\",\n\t\"queue\": [\n\t\t{\n\t\t\t\"id\": \"image-upload-event\",\n\t\t\t\"queue_arn\": \"${aws_sqs_queue.queue.arn}\",\n\t\t\t\"events\": [\"s3:ObjectCreated:*\"],\n\t\t\t\"filter_prefix\": \"images/\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"video-upload-event\",\n\t\t\t\"queue_arn\": \"${aws_sqs_queue.queue.arn}\",\n\t\t\t\"events\": [\"s3:ObjectCreated:*\"],\n\t\t\t\"filter_prefix\": \"videos/\"\n\t\t}\n\t]\n}\n```\n\n### Emit events to EventBridge\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.BucketV2(\"bucket\", {bucket: \"your-bucket-name\"});\nconst bucketNotification = new aws.s3.BucketNotification(\"bucket_notification\", {\n bucket: bucket.id,\n eventbridge: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"your-bucket-name\")\nbucket_notification = aws.s3.BucketNotification(\"bucket_notification\",\n bucket=bucket.id,\n eventbridge=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 bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"your-bucket-name\",\n });\n\n var bucketNotification = new Aws.S3.BucketNotification(\"bucket_notification\", new()\n {\n Bucket = bucket.Id,\n Eventbridge = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"your-bucket-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3.NewBucketNotification(ctx, \"bucket_notification\", \u0026s3.BucketNotificationArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tEventbridge: 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.s3.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.s3.BucketNotification;\nimport com.pulumi.aws.s3.BucketNotificationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"your-bucket-name\")\n .build());\n\n var bucketNotification = new BucketNotification(\"bucketNotification\", BucketNotificationArgs.builder()\n .bucket(bucket.id())\n .eventbridge(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: your-bucket-name\n bucketNotification:\n type: aws:s3:BucketNotification\n name: bucket_notification\n properties:\n bucket: ${bucket.id}\n eventbridge: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import S3 bucket notification using the `bucket`. For example:\n\n```sh\n$ pulumi import aws:s3/bucketNotification:BucketNotification bucket_notification bucket-name\n```\n", "properties": { "bucket": { "type": "string", @@ -347549,12 +348578,16 @@ } }, "aws:sfn/activity:Activity": { - "description": "Provides a Step Function Activity 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 sfnActivity = new aws.sfn.Activity(\"sfn_activity\", {name: \"my-activity\"});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nsfn_activity = aws.sfn.Activity(\"sfn_activity\", name=\"my-activity\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sfnActivity = new Aws.Sfn.Activity(\"sfn_activity\", new()\n {\n Name = \"my-activity\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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_, err := sfn.NewActivity(ctx, \"sfn_activity\", \u0026sfn.ActivityArgs{\n\t\t\tName: pulumi.String(\"my-activity\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.Activity;\nimport com.pulumi.aws.sfn.ActivityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sfnActivity = new Activity(\"sfnActivity\", ActivityArgs.builder()\n .name(\"my-activity\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sfnActivity:\n type: aws:sfn:Activity\n name: sfn_activity\n properties:\n name: my-activity\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import activities using the `arn`. For example:\n\n```sh\n$ pulumi import aws:sfn/activity:Activity foo arn:aws:states:eu-west-1:123456789098:activity:bar\n```\n", + "description": "Provides a Step Function Activity resource\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 sfnActivity = new aws.sfn.Activity(\"sfn_activity\", {name: \"my-activity\"});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nsfn_activity = aws.sfn.Activity(\"sfn_activity\", name=\"my-activity\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sfnActivity = new Aws.Sfn.Activity(\"sfn_activity\", new()\n {\n Name = \"my-activity\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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_, err := sfn.NewActivity(ctx, \"sfn_activity\", \u0026sfn.ActivityArgs{\n\t\t\tName: pulumi.String(\"my-activity\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.Activity;\nimport com.pulumi.aws.sfn.ActivityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sfnActivity = new Activity(\"sfnActivity\", ActivityArgs.builder()\n .name(\"my-activity\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sfnActivity:\n type: aws:sfn:Activity\n name: sfn_activity\n properties:\n name: my-activity\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\nconst sfnActivity = new aws.sfn.Activity(\"sfn_activity\", {\n name: \"my-activity\",\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\nsfn_activity = aws.sfn.Activity(\"sfn_activity\",\n name=\"my-activity\",\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 var sfnActivity = new Aws.Sfn.Activity(\"sfn_activity\", new()\n {\n Name = \"my-activity\",\n EncryptionConfiguration = new Aws.Sfn.Inputs.ActivityEncryptionConfigurationArgs\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\"github.com/pulumi/pulumi-aws/sdk/v6/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_, err := sfn.NewActivity(ctx, \"sfn_activity\", \u0026sfn.ActivityArgs{\n\t\t\tName: pulumi.String(\"my-activity\"),\n\t\t\tEncryptionConfiguration: \u0026sfn.ActivityEncryptionConfigurationArgs{\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.Activity;\nimport com.pulumi.aws.sfn.ActivityArgs;\nimport com.pulumi.aws.sfn.inputs.ActivityEncryptionConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sfnActivity = new Activity(\"sfnActivity\", ActivityArgs.builder()\n .name(\"my-activity\")\n .encryptionConfiguration(ActivityEncryptionConfigurationArgs.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 sfnActivity:\n type: aws:sfn:Activity\n name: sfn_activity\n properties:\n name: my-activity\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\nUsing `pulumi import`, import activities using the `arn`. For example:\n\n```sh\n$ pulumi import aws:sfn/activity:Activity foo arn:aws:states:eu-west-1:123456789098:activity:bar\n```\n", "properties": { "creationDate": { "type": "string", "description": "The date the activity was created.\n" }, + "encryptionConfiguration": { + "$ref": "#/types/aws:sfn/ActivityEncryptionConfiguration:ActivityEncryptionConfiguration", + "description": "Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide.\n" + }, "name": { "type": "string", "description": "The name of the activity to create.\n" @@ -347577,10 +348610,15 @@ }, "required": [ "creationDate", + "encryptionConfiguration", "name", "tagsAll" ], "inputProperties": { + "encryptionConfiguration": { + "$ref": "#/types/aws:sfn/ActivityEncryptionConfiguration:ActivityEncryptionConfiguration", + "description": "Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide.\n" + }, "name": { "type": "string", "description": "The name of the activity to create.\n", @@ -347601,6 +348639,10 @@ "type": "string", "description": "The date the activity was created.\n" }, + "encryptionConfiguration": { + "$ref": "#/types/aws:sfn/ActivityEncryptionConfiguration:ActivityEncryptionConfiguration", + "description": "Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide.\n" + }, "name": { "type": "string", "description": "The name of the activity to create.\n", @@ -347711,7 +348753,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/v6/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.String(fmt.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/v6/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.String(fmt.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/v6/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.String(fmt.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/v6/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.String(fmt.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.String(fmt.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## Import\n\nUsing `pulumi import`, import State Machines using the `arn`. For example:\n\n```sh\n$ pulumi import aws:sfn/stateMachine:StateMachine 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/v6/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.String(fmt.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/v6/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.String(fmt.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/v6/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.String(fmt.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/v6/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.String(fmt.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.String(fmt.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/v6/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.String(fmt.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\nUsing `pulumi import`, import State Machines using the `arn`. For example:\n\n```sh\n$ pulumi import aws:sfn/stateMachine:StateMachine foo arn:aws:states:eu-west-1:123456789098:stateMachine:bar\n```\n", "properties": { "arn": { "type": "string", @@ -347728,6 +348770,10 @@ "description": { "type": "string" }, + "encryptionConfiguration": { + "$ref": "#/types/aws:sfn/StateMachineEncryptionConfiguration:StateMachineEncryptionConfiguration", + "description": "Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide.\n" + }, "loggingConfiguration": { "$ref": "#/types/aws:sfn/StateMachineLoggingConfiguration:StateMachineLoggingConfiguration", "description": "Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide.\n" @@ -347791,6 +348837,7 @@ "creationDate", "definition", "description", + "encryptionConfiguration", "loggingConfiguration", "name", "namePrefix", @@ -347807,6 +348854,10 @@ "type": "string", "description": "The [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html) definition of the state machine.\n" }, + "encryptionConfiguration": { + "$ref": "#/types/aws:sfn/StateMachineEncryptionConfiguration:StateMachineEncryptionConfiguration", + "description": "Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide.\n" + }, "loggingConfiguration": { "$ref": "#/types/aws:sfn/StateMachineLoggingConfiguration:StateMachineLoggingConfiguration", "description": "Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide.\n" @@ -347868,6 +348919,10 @@ "description": { "type": "string" }, + "encryptionConfiguration": { + "$ref": "#/types/aws:sfn/StateMachineEncryptionConfiguration:StateMachineEncryptionConfiguration", + "description": "Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide.\n" + }, "loggingConfiguration": { "$ref": "#/types/aws:sfn/StateMachineLoggingConfiguration:StateMachineLoggingConfiguration", "description": "Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide.\n" @@ -356814,6 +357869,324 @@ "type": "object" } }, + "aws:timestreaminfluxdb/dbInstance:DbInstance": { + "description": "Resource for managing an Amazon Timestream for InfluxDB Db Instance.\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.timestreaminfluxdb.DbInstance(\"example\", {\n allocatedStorage: 20,\n bucket: \"example-bucket-name\",\n dbInstanceType: \"db.influx.medium\",\n username: \"admin\",\n password: \"example-password\",\n organization: \"organization\",\n vpcSubnetIds: [exampleid],\n vpcSecurityGroupIds: [exampleAwsSecurityGroup.id],\n name: \"example-db-instance\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.timestreaminfluxdb.DbInstance(\"example\",\n allocated_storage=20,\n bucket=\"example-bucket-name\",\n db_instance_type=\"db.influx.medium\",\n username=\"admin\",\n password=\"example-password\",\n organization=\"organization\",\n vpc_subnet_ids=[exampleid],\n vpc_security_group_ids=[example_aws_security_group[\"id\"]],\n name=\"example-db-instance\")\n```\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.TimestreamInfluxDB.DbInstance(\"example\", new()\n {\n AllocatedStorage = 20,\n Bucket = \"example-bucket-name\",\n DbInstanceType = \"db.influx.medium\",\n Username = \"admin\",\n Password = \"example-password\",\n Organization = \"organization\",\n VpcSubnetIds = new[]\n {\n exampleid,\n },\n VpcSecurityGroupIds = new[]\n {\n exampleAwsSecurityGroup.Id,\n },\n Name = \"example-db-instance\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/timestreaminfluxdb\"\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 := timestreaminfluxdb.NewDbInstance(ctx, \"example\", \u0026timestreaminfluxdb.DbInstanceArgs{\n\t\t\tAllocatedStorage: pulumi.Int(20),\n\t\t\tBucket: pulumi.String(\"example-bucket-name\"),\n\t\t\tDbInstanceType: pulumi.String(\"db.influx.medium\"),\n\t\t\tUsername: pulumi.String(\"admin\"),\n\t\t\tPassword: pulumi.String(\"example-password\"),\n\t\t\tOrganization: pulumi.String(\"organization\"),\n\t\t\tVpcSubnetIds: pulumi.StringArray{\n\t\t\t\texampleid,\n\t\t\t},\n\t\t\tVpcSecurityGroupIds: pulumi.StringArray{\n\t\t\t\texampleAwsSecurityGroup.Id,\n\t\t\t},\n\t\t\tName: pulumi.String(\"example-db-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.timestreaminfluxdb.DbInstance;\nimport com.pulumi.aws.timestreaminfluxdb.DbInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 DbInstance(\"example\", DbInstanceArgs.builder()\n .allocatedStorage(20)\n .bucket(\"example-bucket-name\")\n .dbInstanceType(\"db.influx.medium\")\n .username(\"admin\")\n .password(\"example-password\")\n .organization(\"organization\")\n .vpcSubnetIds(exampleid)\n .vpcSecurityGroupIds(exampleAwsSecurityGroup.id())\n .name(\"example-db-instance\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:timestreaminfluxdb:DbInstance\n properties:\n allocatedStorage: 20\n bucket: example-bucket-name\n dbInstanceType: db.influx.medium\n username: admin\n password: example-password\n organization: organization\n vpcSubnetIds:\n - ${exampleid}\n vpcSecurityGroupIds:\n - ${exampleAwsSecurityGroup.id}\n name: example-db-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Usage with Prerequisite Resources\n\nAll Timestream for InfluxDB instances require a VPC, subnet, and security group. The following example shows how these prerequisite resources can be created and used with `aws.timestreaminfluxdb.DbInstance`.\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.Vpc(\"example\", {cidrBlock: \"10.0.0.0/16\"});\nconst exampleSubnet = new aws.ec2.Subnet(\"example\", {\n vpcId: example.id,\n cidrBlock: \"10.0.1.0/24\",\n});\nconst exampleSecurityGroup = new aws.ec2.SecurityGroup(\"example\", {\n name: \"example\",\n vpcId: example.id,\n});\nconst exampleDbInstance = new aws.timestreaminfluxdb.DbInstance(\"example\", {\n allocatedStorage: 20,\n bucket: \"example-bucket-name\",\n dbInstanceType: \"db.influx.medium\",\n username: \"admin\",\n password: \"example-password\",\n organization: \"organization\",\n vpcSubnetIds: [exampleSubnet.id],\n vpcSecurityGroupIds: [exampleSecurityGroup.id],\n name: \"example-db-instance\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ec2.Vpc(\"example\", cidr_block=\"10.0.0.0/16\")\nexample_subnet = aws.ec2.Subnet(\"example\",\n vpc_id=example.id,\n cidr_block=\"10.0.1.0/24\")\nexample_security_group = aws.ec2.SecurityGroup(\"example\",\n name=\"example\",\n vpc_id=example.id)\nexample_db_instance = aws.timestreaminfluxdb.DbInstance(\"example\",\n allocated_storage=20,\n bucket=\"example-bucket-name\",\n db_instance_type=\"db.influx.medium\",\n username=\"admin\",\n password=\"example-password\",\n organization=\"organization\",\n vpc_subnet_ids=[example_subnet.id],\n vpc_security_group_ids=[example_security_group.id],\n name=\"example-db-instance\")\n```\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.Vpc(\"example\", new()\n {\n CidrBlock = \"10.0.0.0/16\",\n });\n\n var exampleSubnet = new Aws.Ec2.Subnet(\"example\", new()\n {\n VpcId = example.Id,\n CidrBlock = \"10.0.1.0/24\",\n });\n\n var exampleSecurityGroup = new Aws.Ec2.SecurityGroup(\"example\", new()\n {\n Name = \"example\",\n VpcId = example.Id,\n });\n\n var exampleDbInstance = new Aws.TimestreamInfluxDB.DbInstance(\"example\", new()\n {\n AllocatedStorage = 20,\n Bucket = \"example-bucket-name\",\n DbInstanceType = \"db.influx.medium\",\n Username = \"admin\",\n Password = \"example-password\",\n Organization = \"organization\",\n VpcSubnetIds = new[]\n {\n exampleSubnet.Id,\n },\n VpcSecurityGroupIds = new[]\n {\n exampleSecurityGroup.Id,\n },\n Name = \"example-db-instance\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/timestreaminfluxdb\"\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.NewVpc(ctx, \"example\", \u0026ec2.VpcArgs{\n\t\t\tCidrBlock: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSubnet, err := ec2.NewSubnet(ctx, \"example\", \u0026ec2.SubnetArgs{\n\t\t\tVpcId: example.ID(),\n\t\t\tCidrBlock: pulumi.String(\"10.0.1.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSecurityGroup, err := ec2.NewSecurityGroup(ctx, \"example\", \u0026ec2.SecurityGroupArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tVpcId: example.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = timestreaminfluxdb.NewDbInstance(ctx, \"example\", \u0026timestreaminfluxdb.DbInstanceArgs{\n\t\t\tAllocatedStorage: pulumi.Int(20),\n\t\t\tBucket: pulumi.String(\"example-bucket-name\"),\n\t\t\tDbInstanceType: pulumi.String(\"db.influx.medium\"),\n\t\t\tUsername: pulumi.String(\"admin\"),\n\t\t\tPassword: pulumi.String(\"example-password\"),\n\t\t\tOrganization: pulumi.String(\"organization\"),\n\t\t\tVpcSubnetIds: pulumi.StringArray{\n\t\t\t\texampleSubnet.ID(),\n\t\t\t},\n\t\t\tVpcSecurityGroupIds: pulumi.StringArray{\n\t\t\t\texampleSecurityGroup.ID(),\n\t\t\t},\n\t\t\tName: pulumi.String(\"example-db-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.Vpc;\nimport com.pulumi.aws.ec2.VpcArgs;\nimport com.pulumi.aws.ec2.Subnet;\nimport com.pulumi.aws.ec2.SubnetArgs;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.timestreaminfluxdb.DbInstance;\nimport com.pulumi.aws.timestreaminfluxdb.DbInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Vpc(\"example\", VpcArgs.builder()\n .cidrBlock(\"10.0.0.0/16\")\n .build());\n\n var exampleSubnet = new Subnet(\"exampleSubnet\", SubnetArgs.builder()\n .vpcId(example.id())\n .cidrBlock(\"10.0.1.0/24\")\n .build());\n\n var exampleSecurityGroup = new SecurityGroup(\"exampleSecurityGroup\", SecurityGroupArgs.builder()\n .name(\"example\")\n .vpcId(example.id())\n .build());\n\n var exampleDbInstance = new DbInstance(\"exampleDbInstance\", DbInstanceArgs.builder()\n .allocatedStorage(20)\n .bucket(\"example-bucket-name\")\n .dbInstanceType(\"db.influx.medium\")\n .username(\"admin\")\n .password(\"example-password\")\n .organization(\"organization\")\n .vpcSubnetIds(exampleSubnet.id())\n .vpcSecurityGroupIds(exampleSecurityGroup.id())\n .name(\"example-db-instance\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ec2:Vpc\n properties:\n cidrBlock: 10.0.0.0/16\n exampleSubnet:\n type: aws:ec2:Subnet\n name: example\n properties:\n vpcId: ${example.id}\n cidrBlock: 10.0.1.0/24\n exampleSecurityGroup:\n type: aws:ec2:SecurityGroup\n name: example\n properties:\n name: example\n vpcId: ${example.id}\n exampleDbInstance:\n type: aws:timestreaminfluxdb:DbInstance\n name: example\n properties:\n allocatedStorage: 20\n bucket: example-bucket-name\n dbInstanceType: db.influx.medium\n username: admin\n password: example-password\n organization: organization\n vpcSubnetIds:\n - ${exampleSubnet.id}\n vpcSecurityGroupIds:\n - ${exampleSecurityGroup.id}\n name: example-db-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Usage with S3 Log Delivery Enabled\n\nYou can use an S3 bucket to store logs generated by your Timestream for InfluxDB instance. The following example shows what resources and arguments are required to configure an S3 bucket for logging, including the IAM policy that needs to be set in order to allow Timestream for InfluxDB to place logs in your S3 bucket. The configuration of the required VPC, security group, and subnet have been left out of the example for brevity.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleBucketV2 = new aws.s3.BucketV2(\"example\", {bucket: \"example-s3-bucket\"});\nconst example = aws.iam.getPolicyDocumentOutput({\n statements: [{\n actions: [\"s3:PutObject\"],\n principals: [{\n type: \"Service\",\n identifiers: [\"timestream-influxdb.amazonaws.com\"],\n }],\n resources: [pulumi.interpolate`${exampleBucketV2.arn}/*`],\n }],\n});\nconst exampleBucketPolicy = new aws.s3.BucketPolicy(\"example\", {\n bucket: exampleBucketV2.id,\n policy: example.apply(example =\u003e example.json),\n});\nconst exampleDbInstance = new aws.timestreaminfluxdb.DbInstance(\"example\", {\n allocatedStorage: 20,\n bucket: \"example-bucket-name\",\n dbInstanceType: \"db.influx.medium\",\n username: \"admin\",\n password: \"example-password\",\n organization: \"organization\",\n vpcSubnetIds: [exampleAwsSubnet.id],\n vpcSecurityGroupIds: [exampleAwsSecurityGroup.id],\n name: \"example-db-instance\",\n logDeliveryConfiguration: {\n s3Configuration: {\n bucketName: exampleBucketV2.name,\n enabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_bucket_v2 = aws.s3.BucketV2(\"example\", bucket=\"example-s3-bucket\")\nexample = aws.iam.get_policy_document_output(statements=[{\n \"actions\": [\"s3:PutObject\"],\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"timestream-influxdb.amazonaws.com\"],\n }],\n \"resources\": [example_bucket_v2.arn.apply(lambda arn: f\"{arn}/*\")],\n}])\nexample_bucket_policy = aws.s3.BucketPolicy(\"example\",\n bucket=example_bucket_v2.id,\n policy=example.json)\nexample_db_instance = aws.timestreaminfluxdb.DbInstance(\"example\",\n allocated_storage=20,\n bucket=\"example-bucket-name\",\n db_instance_type=\"db.influx.medium\",\n username=\"admin\",\n password=\"example-password\",\n organization=\"organization\",\n vpc_subnet_ids=[example_aws_subnet[\"id\"]],\n vpc_security_group_ids=[example_aws_security_group[\"id\"]],\n name=\"example-db-instance\",\n log_delivery_configuration={\n \"s3_configuration\": {\n \"bucket_name\": example_bucket_v2.name,\n \"enabled\": True,\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 exampleBucketV2 = new Aws.S3.BucketV2(\"example\", new()\n {\n Bucket = \"example-s3-bucket\",\n });\n\n var example = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Actions = new[]\n {\n \"s3:PutObject\",\n },\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"timestream-influxdb.amazonaws.com\",\n },\n },\n },\n Resources = new[]\n {\n $\"{exampleBucketV2.Arn}/*\",\n },\n },\n },\n });\n\n var exampleBucketPolicy = new Aws.S3.BucketPolicy(\"example\", new()\n {\n Bucket = exampleBucketV2.Id,\n Policy = example.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var exampleDbInstance = new Aws.TimestreamInfluxDB.DbInstance(\"example\", new()\n {\n AllocatedStorage = 20,\n Bucket = \"example-bucket-name\",\n DbInstanceType = \"db.influx.medium\",\n Username = \"admin\",\n Password = \"example-password\",\n Organization = \"organization\",\n VpcSubnetIds = new[]\n {\n exampleAwsSubnet.Id,\n },\n VpcSecurityGroupIds = new[]\n {\n exampleAwsSecurityGroup.Id,\n },\n Name = \"example-db-instance\",\n LogDeliveryConfiguration = new Aws.TimestreamInfluxDB.Inputs.DbInstanceLogDeliveryConfigurationArgs\n {\n S3Configuration = new Aws.TimestreamInfluxDB.Inputs.DbInstanceLogDeliveryConfigurationS3ConfigurationArgs\n {\n BucketName = exampleBucketV2.Name,\n Enabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/timestreaminfluxdb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleBucketV2, err := s3.NewBucketV2(ctx, \"example\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"example-s3-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := 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(\"s3:PutObject\"),\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(\"timestream-influxdb.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\tResources: pulumi.StringArray{\n\t\t\t\t\t\texampleBucketV2.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},\n\t\t}, nil)\n\t\t_, err = s3.NewBucketPolicy(ctx, \"example\", \u0026s3.BucketPolicyArgs{\n\t\t\tBucket: exampleBucketV2.ID(),\n\t\t\tPolicy: pulumi.String(example.ApplyT(func(example iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026example.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 = timestreaminfluxdb.NewDbInstance(ctx, \"example\", \u0026timestreaminfluxdb.DbInstanceArgs{\n\t\t\tAllocatedStorage: pulumi.Int(20),\n\t\t\tBucket: pulumi.String(\"example-bucket-name\"),\n\t\t\tDbInstanceType: pulumi.String(\"db.influx.medium\"),\n\t\t\tUsername: pulumi.String(\"admin\"),\n\t\t\tPassword: pulumi.String(\"example-password\"),\n\t\t\tOrganization: pulumi.String(\"organization\"),\n\t\t\tVpcSubnetIds: pulumi.StringArray{\n\t\t\t\texampleAwsSubnet.Id,\n\t\t\t},\n\t\t\tVpcSecurityGroupIds: pulumi.StringArray{\n\t\t\t\texampleAwsSecurityGroup.Id,\n\t\t\t},\n\t\t\tName: pulumi.String(\"example-db-instance\"),\n\t\t\tLogDeliveryConfiguration: \u0026timestreaminfluxdb.DbInstanceLogDeliveryConfigurationArgs{\n\t\t\t\tS3Configuration: \u0026timestreaminfluxdb.DbInstanceLogDeliveryConfigurationS3ConfigurationArgs{\n\t\t\t\t\tBucketName: exampleBucketV2.Name,\n\t\t\t\t\tEnabled: 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\treturn nil\n\t})\n}\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.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.s3.BucketPolicy;\nimport com.pulumi.aws.s3.BucketPolicyArgs;\nimport com.pulumi.aws.timestreaminfluxdb.DbInstance;\nimport com.pulumi.aws.timestreaminfluxdb.DbInstanceArgs;\nimport com.pulumi.aws.timestreaminfluxdb.inputs.DbInstanceLogDeliveryConfigurationArgs;\nimport com.pulumi.aws.timestreaminfluxdb.inputs.DbInstanceLogDeliveryConfigurationS3ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleBucketV2 = new BucketV2(\"exampleBucketV2\", BucketV2Args.builder()\n .bucket(\"example-s3-bucket\")\n .build());\n\n final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .actions(\"s3:PutObject\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"timestream-influxdb.amazonaws.com\")\n .build())\n .resources(exampleBucketV2.arn().applyValue(arn -\u003e String.format(\"%s/*\", arn)))\n .build())\n .build());\n\n var exampleBucketPolicy = new BucketPolicy(\"exampleBucketPolicy\", BucketPolicyArgs.builder()\n .bucket(exampleBucketV2.id())\n .policy(example.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult).applyValue(example -\u003e example.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json())))\n .build());\n\n var exampleDbInstance = new DbInstance(\"exampleDbInstance\", DbInstanceArgs.builder()\n .allocatedStorage(20)\n .bucket(\"example-bucket-name\")\n .dbInstanceType(\"db.influx.medium\")\n .username(\"admin\")\n .password(\"example-password\")\n .organization(\"organization\")\n .vpcSubnetIds(exampleAwsSubnet.id())\n .vpcSecurityGroupIds(exampleAwsSecurityGroup.id())\n .name(\"example-db-instance\")\n .logDeliveryConfiguration(DbInstanceLogDeliveryConfigurationArgs.builder()\n .s3Configuration(DbInstanceLogDeliveryConfigurationS3ConfigurationArgs.builder()\n .bucketName(exampleBucketV2.name())\n .enabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBucketV2:\n type: aws:s3:BucketV2\n name: example\n properties:\n bucket: example-s3-bucket\n exampleBucketPolicy:\n type: aws:s3:BucketPolicy\n name: example\n properties:\n bucket: ${exampleBucketV2.id}\n policy: ${example.json}\n exampleDbInstance:\n type: aws:timestreaminfluxdb:DbInstance\n name: example\n properties:\n allocatedStorage: 20\n bucket: example-bucket-name\n dbInstanceType: db.influx.medium\n username: admin\n password: example-password\n organization: organization\n vpcSubnetIds:\n - ${exampleAwsSubnet.id}\n vpcSecurityGroupIds:\n - ${exampleAwsSecurityGroup.id}\n name: example-db-instance\n logDeliveryConfiguration:\n s3Configuration:\n bucketName: ${exampleBucketV2.name}\n enabled: true\nvariables:\n example:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - actions:\n - s3:PutObject\n principals:\n - type: Service\n identifiers:\n - timestream-influxdb.amazonaws.com\n resources:\n - ${exampleBucketV2.arn}/*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Usage with MultiAZ Deployment\n\nTo use multi-region availability, at least two subnets must be created in different availability zones and used with your Timestream for InfluxDB instance.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example1 = new aws.ec2.Subnet(\"example_1\", {\n vpcId: exampleAwsVpc.id,\n cidrBlock: \"10.0.1.0/24\",\n availabilityZone: \"us-west-2a\",\n});\nconst example2 = new aws.ec2.Subnet(\"example_2\", {\n vpcId: exampleAwsVpc.id,\n cidrBlock: \"10.0.2.0/24\",\n availabilityZone: \"us-west-2b\",\n});\nconst example = new aws.timestreaminfluxdb.DbInstance(\"example\", {\n allocatedStorage: 20,\n bucket: \"example-bucket-name\",\n dbInstanceType: \"db.influx.medium\",\n deploymentType: \"WITH_MULTIAZ_STANDBY\",\n username: \"admin\",\n password: \"example-password\",\n organization: \"organization\",\n vpcSubnetIds: [\n example1.id,\n example2.id,\n ],\n vpcSecurityGroupIds: [exampleAwsSecurityGroup.id],\n name: \"example-db-instance\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample1 = aws.ec2.Subnet(\"example_1\",\n vpc_id=example_aws_vpc[\"id\"],\n cidr_block=\"10.0.1.0/24\",\n availability_zone=\"us-west-2a\")\nexample2 = aws.ec2.Subnet(\"example_2\",\n vpc_id=example_aws_vpc[\"id\"],\n cidr_block=\"10.0.2.0/24\",\n availability_zone=\"us-west-2b\")\nexample = aws.timestreaminfluxdb.DbInstance(\"example\",\n allocated_storage=20,\n bucket=\"example-bucket-name\",\n db_instance_type=\"db.influx.medium\",\n deployment_type=\"WITH_MULTIAZ_STANDBY\",\n username=\"admin\",\n password=\"example-password\",\n organization=\"organization\",\n vpc_subnet_ids=[\n example1.id,\n example2.id,\n ],\n vpc_security_group_ids=[example_aws_security_group[\"id\"]],\n name=\"example-db-instance\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example1 = new Aws.Ec2.Subnet(\"example_1\", new()\n {\n VpcId = exampleAwsVpc.Id,\n CidrBlock = \"10.0.1.0/24\",\n AvailabilityZone = \"us-west-2a\",\n });\n\n var example2 = new Aws.Ec2.Subnet(\"example_2\", new()\n {\n VpcId = exampleAwsVpc.Id,\n CidrBlock = \"10.0.2.0/24\",\n AvailabilityZone = \"us-west-2b\",\n });\n\n var example = new Aws.TimestreamInfluxDB.DbInstance(\"example\", new()\n {\n AllocatedStorage = 20,\n Bucket = \"example-bucket-name\",\n DbInstanceType = \"db.influx.medium\",\n DeploymentType = \"WITH_MULTIAZ_STANDBY\",\n Username = \"admin\",\n Password = \"example-password\",\n Organization = \"organization\",\n VpcSubnetIds = new[]\n {\n example1.Id,\n example2.Id,\n },\n VpcSecurityGroupIds = new[]\n {\n exampleAwsSecurityGroup.Id,\n },\n Name = \"example-db-instance\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/timestreaminfluxdb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample1, err := ec2.NewSubnet(ctx, \"example_1\", \u0026ec2.SubnetArgs{\n\t\t\tVpcId: pulumi.Any(exampleAwsVpc.Id),\n\t\t\tCidrBlock: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tAvailabilityZone: pulumi.String(\"us-west-2a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample2, err := ec2.NewSubnet(ctx, \"example_2\", \u0026ec2.SubnetArgs{\n\t\t\tVpcId: pulumi.Any(exampleAwsVpc.Id),\n\t\t\tCidrBlock: pulumi.String(\"10.0.2.0/24\"),\n\t\t\tAvailabilityZone: pulumi.String(\"us-west-2b\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = timestreaminfluxdb.NewDbInstance(ctx, \"example\", \u0026timestreaminfluxdb.DbInstanceArgs{\n\t\t\tAllocatedStorage: pulumi.Int(20),\n\t\t\tBucket: pulumi.String(\"example-bucket-name\"),\n\t\t\tDbInstanceType: pulumi.String(\"db.influx.medium\"),\n\t\t\tDeploymentType: pulumi.String(\"WITH_MULTIAZ_STANDBY\"),\n\t\t\tUsername: pulumi.String(\"admin\"),\n\t\t\tPassword: pulumi.String(\"example-password\"),\n\t\t\tOrganization: pulumi.String(\"organization\"),\n\t\t\tVpcSubnetIds: pulumi.StringArray{\n\t\t\t\texample1.ID(),\n\t\t\t\texample2.ID(),\n\t\t\t},\n\t\t\tVpcSecurityGroupIds: pulumi.StringArray{\n\t\t\t\texampleAwsSecurityGroup.Id,\n\t\t\t},\n\t\t\tName: pulumi.String(\"example-db-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.timestreaminfluxdb.DbInstance;\nimport com.pulumi.aws.timestreaminfluxdb.DbInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example1 = new Subnet(\"example1\", SubnetArgs.builder()\n .vpcId(exampleAwsVpc.id())\n .cidrBlock(\"10.0.1.0/24\")\n .availabilityZone(\"us-west-2a\")\n .build());\n\n var example2 = new Subnet(\"example2\", SubnetArgs.builder()\n .vpcId(exampleAwsVpc.id())\n .cidrBlock(\"10.0.2.0/24\")\n .availabilityZone(\"us-west-2b\")\n .build());\n\n var example = new DbInstance(\"example\", DbInstanceArgs.builder()\n .allocatedStorage(20)\n .bucket(\"example-bucket-name\")\n .dbInstanceType(\"db.influx.medium\")\n .deploymentType(\"WITH_MULTIAZ_STANDBY\")\n .username(\"admin\")\n .password(\"example-password\")\n .organization(\"organization\")\n .vpcSubnetIds( \n example1.id(),\n example2.id())\n .vpcSecurityGroupIds(exampleAwsSecurityGroup.id())\n .name(\"example-db-instance\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example1:\n type: aws:ec2:Subnet\n name: example_1\n properties:\n vpcId: ${exampleAwsVpc.id}\n cidrBlock: 10.0.1.0/24\n availabilityZone: us-west-2a\n example2:\n type: aws:ec2:Subnet\n name: example_2\n properties:\n vpcId: ${exampleAwsVpc.id}\n cidrBlock: 10.0.2.0/24\n availabilityZone: us-west-2b\n example:\n type: aws:timestreaminfluxdb:DbInstance\n properties:\n allocatedStorage: 20\n bucket: example-bucket-name\n dbInstanceType: db.influx.medium\n deploymentType: WITH_MULTIAZ_STANDBY\n username: admin\n password: example-password\n organization: organization\n vpcSubnetIds:\n - ${example1.id}\n - ${example2.id}\n vpcSecurityGroupIds:\n - ${exampleAwsSecurityGroup.id}\n name: example-db-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Timestream for InfluxDB Db Instance using its identifier. For example:\n\n```sh\n$ pulumi import aws:timestreaminfluxdb/dbInstance:DbInstance example 12345abcde\n```\n", + "properties": { + "allocatedStorage": { + "type": "integer", + "description": "Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384.\n" + }, + "arn": { + "type": "string", + "description": "ARN of the Timestream for InfluxDB Instance.\n" + }, + "availabilityZone": { + "type": "string", + "description": "Availability Zone in which the DB instance resides.\n" + }, + "bucket": { + "type": "string", + "description": "Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute.\n" + }, + "dbInstanceType": { + "type": "string", + "description": "Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `\"db.influx.medium\"`, `\"db.influx.large\"`, `\"db.influx.xlarge\"`, `\"db.influx.2xlarge\"`, `\"db.influx.4xlarge\"`, `\"db.influx.8xlarge\"`, `\"db.influx.12xlarge\"`, and `\"db.influx.16xlarge\"`.\n" + }, + "dbParameterGroupIdentifier": { + "type": "string", + "description": "ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated.\n" + }, + "dbStorageType": { + "type": "string", + "description": "Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `\"InfluxIOIncludedT1\"`, `\"InfluxIOIncludedT2\"`, and `\"InfluxIOIncludedT1\"`. If you use `\"InfluxIOIncludedT2\" or \"InfluxIOIncludedT3\", the minimum value for `allocated_storage` is 400.\n" + }, + "deploymentType": { + "type": "string", + "description": "Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `\"SINGLE_AZ\"`, `\"WITH_MULTIAZ_STANDBY\"`.\n" + }, + "endpoint": { + "type": "string", + "description": "Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086.\n" + }, + "influxAuthParametersSecretArn": { + "type": "string", + "description": "ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `aws.timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors.\n" + }, + "logDeliveryConfiguration": { + "$ref": "#/types/aws:timestreaminfluxdb/DbInstanceLogDeliveryConfiguration:DbInstanceLogDeliveryConfiguration", + "description": "Configuration for sending InfluxDB engine logs to a specified S3 bucket.\n" + }, + "name": { + "type": "string", + "description": "Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen.\n" + }, + "organization": { + "type": "string", + "description": "Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute.\n" + }, + "password": { + "type": "string", + "description": "Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute.\n", + "secret": true + }, + "publiclyAccessible": { + "type": "boolean", + "description": "Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See \"Usage with Public Internet Access Enabled\" for an example configuration with all required resources for public internet access.\n" + }, + "secondaryAvailabilityZone": { + "type": "string", + "description": "Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "deprecationMessage": "Please use `tags` instead." + }, + "timeouts": { + "$ref": "#/types/aws:timestreaminfluxdb/DbInstanceTimeouts:DbInstanceTimeouts" + }, + "username": { + "type": "string", + "description": "Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute.\n" + }, + "vpcSecurityGroupIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of VPC security group IDs to associate with the DB instance.\n" + }, + "vpcSubnetIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby.\n\nThe following arguments are optional:\n" + } + }, + "required": [ + "allocatedStorage", + "arn", + "availabilityZone", + "bucket", + "dbInstanceType", + "dbStorageType", + "deploymentType", + "endpoint", + "influxAuthParametersSecretArn", + "name", + "organization", + "password", + "publiclyAccessible", + "secondaryAvailabilityZone", + "tagsAll", + "username", + "vpcSecurityGroupIds", + "vpcSubnetIds" + ], + "inputProperties": { + "allocatedStorage": { + "type": "integer", + "description": "Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384.\n" + }, + "bucket": { + "type": "string", + "description": "Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute.\n" + }, + "dbInstanceType": { + "type": "string", + "description": "Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `\"db.influx.medium\"`, `\"db.influx.large\"`, `\"db.influx.xlarge\"`, `\"db.influx.2xlarge\"`, `\"db.influx.4xlarge\"`, `\"db.influx.8xlarge\"`, `\"db.influx.12xlarge\"`, and `\"db.influx.16xlarge\"`.\n" + }, + "dbParameterGroupIdentifier": { + "type": "string", + "description": "ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated.\n" + }, + "dbStorageType": { + "type": "string", + "description": "Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `\"InfluxIOIncludedT1\"`, `\"InfluxIOIncludedT2\"`, and `\"InfluxIOIncludedT1\"`. If you use `\"InfluxIOIncludedT2\" or \"InfluxIOIncludedT3\", the minimum value for `allocated_storage` is 400.\n" + }, + "deploymentType": { + "type": "string", + "description": "Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `\"SINGLE_AZ\"`, `\"WITH_MULTIAZ_STANDBY\"`.\n" + }, + "logDeliveryConfiguration": { + "$ref": "#/types/aws:timestreaminfluxdb/DbInstanceLogDeliveryConfiguration:DbInstanceLogDeliveryConfiguration", + "description": "Configuration for sending InfluxDB engine logs to a specified S3 bucket.\n" + }, + "name": { + "type": "string", + "description": "Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen.\n" + }, + "organization": { + "type": "string", + "description": "Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute.\n" + }, + "password": { + "type": "string", + "description": "Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute.\n", + "secret": true + }, + "publiclyAccessible": { + "type": "boolean", + "description": "Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See \"Usage with Public Internet Access Enabled\" for an example configuration with all required resources for public internet access.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" + }, + "timeouts": { + "$ref": "#/types/aws:timestreaminfluxdb/DbInstanceTimeouts:DbInstanceTimeouts" + }, + "username": { + "type": "string", + "description": "Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute.\n" + }, + "vpcSecurityGroupIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of VPC security group IDs to associate with the DB instance.\n" + }, + "vpcSubnetIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby.\n\nThe following arguments are optional:\n" + } + }, + "requiredInputs": [ + "allocatedStorage", + "bucket", + "dbInstanceType", + "organization", + "password", + "username", + "vpcSecurityGroupIds", + "vpcSubnetIds" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering DbInstance resources.\n", + "properties": { + "allocatedStorage": { + "type": "integer", + "description": "Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384.\n" + }, + "arn": { + "type": "string", + "description": "ARN of the Timestream for InfluxDB Instance.\n" + }, + "availabilityZone": { + "type": "string", + "description": "Availability Zone in which the DB instance resides.\n" + }, + "bucket": { + "type": "string", + "description": "Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute.\n" + }, + "dbInstanceType": { + "type": "string", + "description": "Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `\"db.influx.medium\"`, `\"db.influx.large\"`, `\"db.influx.xlarge\"`, `\"db.influx.2xlarge\"`, `\"db.influx.4xlarge\"`, `\"db.influx.8xlarge\"`, `\"db.influx.12xlarge\"`, and `\"db.influx.16xlarge\"`.\n" + }, + "dbParameterGroupIdentifier": { + "type": "string", + "description": "ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated.\n" + }, + "dbStorageType": { + "type": "string", + "description": "Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `\"InfluxIOIncludedT1\"`, `\"InfluxIOIncludedT2\"`, and `\"InfluxIOIncludedT1\"`. If you use `\"InfluxIOIncludedT2\" or \"InfluxIOIncludedT3\", the minimum value for `allocated_storage` is 400.\n" + }, + "deploymentType": { + "type": "string", + "description": "Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `\"SINGLE_AZ\"`, `\"WITH_MULTIAZ_STANDBY\"`.\n" + }, + "endpoint": { + "type": "string", + "description": "Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086.\n" + }, + "influxAuthParametersSecretArn": { + "type": "string", + "description": "ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `aws.timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors.\n" + }, + "logDeliveryConfiguration": { + "$ref": "#/types/aws:timestreaminfluxdb/DbInstanceLogDeliveryConfiguration:DbInstanceLogDeliveryConfiguration", + "description": "Configuration for sending InfluxDB engine logs to a specified S3 bucket.\n" + }, + "name": { + "type": "string", + "description": "Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen.\n" + }, + "organization": { + "type": "string", + "description": "Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute.\n" + }, + "password": { + "type": "string", + "description": "Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute.\n", + "secret": true + }, + "publiclyAccessible": { + "type": "boolean", + "description": "Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See \"Usage with Public Internet Access Enabled\" for an example configuration with all required resources for public internet access.\n" + }, + "secondaryAvailabilityZone": { + "type": "string", + "description": "Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "deprecationMessage": "Please use `tags` instead." + }, + "timeouts": { + "$ref": "#/types/aws:timestreaminfluxdb/DbInstanceTimeouts:DbInstanceTimeouts" + }, + "username": { + "type": "string", + "description": "Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute.\n" + }, + "vpcSecurityGroupIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of VPC security group IDs to associate with the DB instance.\n" + }, + "vpcSubnetIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby.\n\nThe following arguments are optional:\n" + } + }, + "type": "object" + } + }, "aws:timestreamwrite/database:Database": { "description": "Provides a Timestream database 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.timestreamwrite.Database(\"example\", {databaseName: \"database-example\"});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.timestreamwrite.Database(\"example\", database_name=\"database-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.TimestreamWrite.Database(\"example\", new()\n {\n DatabaseName = \"database-example\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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 := timestreamwrite.NewDatabase(ctx, \"example\", \u0026timestreamwrite.DatabaseArgs{\n\t\t\tDatabaseName: pulumi.String(\"database-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.timestreamwrite.Database;\nimport com.pulumi.aws.timestreamwrite.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Database(\"example\", DatabaseArgs.builder()\n .databaseName(\"database-example\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:timestreamwrite:Database\n properties:\n databaseName: database-example\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\";\n\nconst example = new aws.timestreamwrite.Database(\"example\", {\n databaseName: \"database-example\",\n kmsKeyId: exampleAwsKmsKey.arn,\n tags: {\n Name: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.timestreamwrite.Database(\"example\",\n database_name=\"database-example\",\n kms_key_id=example_aws_kms_key[\"arn\"],\n tags={\n \"Name\": \"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.TimestreamWrite.Database(\"example\", new()\n {\n DatabaseName = \"database-example\",\n KmsKeyId = exampleAwsKmsKey.Arn,\n Tags = \n {\n { \"Name\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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 := timestreamwrite.NewDatabase(ctx, \"example\", \u0026timestreamwrite.DatabaseArgs{\n\t\t\tDatabaseName: pulumi.String(\"database-example\"),\n\t\t\tKmsKeyId: pulumi.Any(exampleAwsKmsKey.Arn),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": 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.timestreamwrite.Database;\nimport com.pulumi.aws.timestreamwrite.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Database(\"example\", DatabaseArgs.builder()\n .databaseName(\"database-example\")\n .kmsKeyId(exampleAwsKmsKey.arn())\n .tags(Map.of(\"Name\", \"value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:timestreamwrite:Database\n properties:\n databaseName: database-example\n kmsKeyId: ${exampleAwsKmsKey.arn}\n tags:\n Name: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Timestream databases using the `database_name`. For example:\n\n```sh\n$ pulumi import aws:timestreamwrite/database:Database example example\n```\n", "properties": { @@ -364373,6 +365746,10 @@ "type": "string", "description": "Friendly name of the WebACL.\n" }, + "ruleJson": { + "type": "string", + "description": "Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure.\n" + }, "rules": { "type": "array", "items": { @@ -364455,6 +365832,10 @@ "description": "Friendly name of the WebACL.\n", "willReplaceOnChanges": true }, + "ruleJson": { + "type": "string", + "description": "Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure.\n" + }, "rules": { "type": "array", "items": { @@ -364541,6 +365922,10 @@ "description": "Friendly name of the WebACL.\n", "willReplaceOnChanges": true }, + "ruleJson": { + "type": "string", + "description": "Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure.\n" + }, "rules": { "type": "array", "items": { @@ -384835,6 +386220,101 @@ "type": "object" } }, + "aws:ecr/getRepositoryCreationTemplate:getRepositoryCreationTemplate": { + "description": "The ECR Repository Creation Template data source allows the template details to be retrieved for a 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.ecr.getRepositoryCreationTemplate({\n prefix: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ecr.get_repository_creation_template(prefix=\"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 = Aws.Ecr.GetRepositoryCreationTemplate.Invoke(new()\n {\n Prefix = \"example\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\t_, err := ecr.LookupRepositoryCreationTemplate(ctx, \u0026ecr.LookupRepositoryCreationTemplateArgs{\n\t\t\tPrefix: \"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.ecr.EcrFunctions;\nimport com.pulumi.aws.ecr.inputs.GetRepositoryCreationTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 = EcrFunctions.getRepositoryCreationTemplate(GetRepositoryCreationTemplateArgs.builder()\n .prefix(\"example\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: aws:ecr:getRepositoryCreationTemplate\n Arguments:\n prefix: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getRepositoryCreationTemplate.\n", + "properties": { + "prefix": { + "type": "string", + "description": "The repository name prefix that the template matches against.\n", + "willReplaceOnChanges": true + }, + "resourceTags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags to assign to any created repositories.\n" + } + }, + "type": "object", + "required": [ + "prefix" + ] + }, + "outputs": { + "description": "A collection of values returned by getRepositoryCreationTemplate.\n", + "properties": { + "appliedFors": { + "description": "Which features this template applies to. Contains one or more of `PULL_THROUGH_CACHE` or `REPLICATION`.\n", + "items": { + "type": "string" + }, + "type": "array" + }, + "customRoleArn": { + "description": "The ARN of the custom role used for repository creation.\n", + "type": "string" + }, + "description": { + "description": "The description for this template.\n", + "type": "string" + }, + "encryptionConfigurations": { + "description": "Encryption configuration for any created repositories. See Encryption Configuration below.\n", + "items": { + "$ref": "#/types/aws:ecr/getRepositoryCreationTemplateEncryptionConfiguration:getRepositoryCreationTemplateEncryptionConfiguration" + }, + "type": "array" + }, + "id": { + "description": "The provider-assigned unique ID for this managed resource.\n", + "type": "string" + }, + "imageTagMutability": { + "description": "The tag mutability setting for any created repositories.\n", + "type": "string" + }, + "lifecyclePolicy": { + "description": "The lifecycle policy document to apply to any created repositories.\n", + "type": "string" + }, + "prefix": { + "type": "string" + }, + "registryId": { + "description": "The registry ID the repository creation template applies to.\n", + "type": "string" + }, + "repositoryPolicy": { + "description": "The registry policy document to apply to any created repositories.\n", + "type": "string" + }, + "resourceTags": { + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags to assign to any created repositories.\n", + "type": "object" + } + }, + "required": [ + "appliedFors", + "customRoleArn", + "description", + "encryptionConfigurations", + "imageTagMutability", + "lifecyclePolicy", + "prefix", + "registryId", + "repositoryPolicy", + "resourceTags", + "id" + ], + "type": "object" + } + }, "aws:ecrpublic/getAuthorizationToken:getAuthorizationToken": { "description": "The Public ECR Authorization Token data source allows the authorization token, token expiration date, user name, and password to be retrieved for a Public ECR repository.\n\n\u003e **NOTE:** This data source can only be used in the `us-east-1` region.\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 token = aws.ecrpublic.getAuthorizationToken({});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntoken = aws.ecrpublic.get_authorization_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 token = Aws.EcrPublic.GetAuthorizationToken.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecrpublic\"\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 := ecrpublic.GetAuthorizationToken(ctx, nil, 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.ecrpublic.EcrpublicFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 token = EcrpublicFunctions.getAuthorizationToken();\n\n }\n}\n```\n```yaml\nvariables:\n token:\n fn::invoke:\n Function: aws:ecrpublic:getAuthorizationToken\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "outputs": { @@ -386084,6 +387564,13 @@ "description": "Key-value map of resource tags.\n", "type": "object" }, + "upgradePolicies": { + "description": "(Optional) Configuration block for the support policy to use for the cluster.\n", + "items": { + "$ref": "#/types/aws:eks/getClusterUpgradePolicy:getClusterUpgradePolicy" + }, + "type": "array" + }, "version": { "description": "Kubernetes server version for the cluster.\n", "type": "string" @@ -386109,6 +387596,7 @@ "roleArn", "status", "tags", + "upgradePolicies", "version", "vpcConfig", "id" @@ -405855,7 +407343,7 @@ }, "repositoryName": { "type": "string", - "description": "Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`.\n" + "description": "Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`.\n" } }, "type": "object", diff --git a/provider/go.mod b/provider/go.mod index 2b499eb2768..061c7a4b71d 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -7,7 +7,7 @@ require ( github.com/aws/aws-sdk-go-v2/config v1.27.27 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 github.com/aws/aws-sdk-go-v2/service/appconfig v1.31.3 - github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.33.3 + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.34.0 github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.23.3 github.com/aws/aws-sdk-go-v2/service/s3 v1.58.2 github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.54 @@ -67,7 +67,7 @@ require ( github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/armon/go-radix v1.0.0 // indirect github.com/atotto/clipboard v0.1.4 // indirect - github.com/aws/aws-sdk-go v1.55.2 // indirect + github.com/aws/aws-sdk-go v1.55.5 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.27 // indirect github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.9 // indirect @@ -86,11 +86,12 @@ require ( github.com/aws/aws-sdk-go-v2/service/appfabric v1.9.3 // indirect github.com/aws/aws-sdk-go-v2/service/appflow v1.43.3 // indirect github.com/aws/aws-sdk-go-v2/service/appintegrations v1.27.3 // indirect - github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.30.4 // indirect + github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.31.0 // indirect github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.26.3 // indirect - github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.2.3 // indirect + github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.3.0 // indirect + github.com/aws/aws-sdk-go-v2/service/appmesh v1.27.3 // indirect github.com/aws/aws-sdk-go-v2/service/apprunner v1.30.3 // indirect - github.com/aws/aws-sdk-go-v2/service/appstream v1.36.3 // indirect + github.com/aws/aws-sdk-go-v2/service/appstream v1.37.0 // indirect github.com/aws/aws-sdk-go-v2/service/appsync v1.35.0 // indirect github.com/aws/aws-sdk-go-v2/service/athena v1.44.3 // indirect github.com/aws/aws-sdk-go-v2/service/auditmanager v1.35.3 // indirect @@ -120,11 +121,11 @@ require ( github.com/aws/aws-sdk-go-v2/service/codeartifact v1.30.3 // indirect github.com/aws/aws-sdk-go-v2/service/codebuild v1.40.3 // indirect github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.15.3 // indirect - github.com/aws/aws-sdk-go-v2/service/codecommit v1.24.3 // indirect + github.com/aws/aws-sdk-go-v2/service/codecommit v1.25.0 // indirect github.com/aws/aws-sdk-go-v2/service/codedeploy v1.27.3 // indirect github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.22.3 // indirect github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.27.3 // indirect - github.com/aws/aws-sdk-go-v2/service/codepipeline v1.30.3 // indirect + github.com/aws/aws-sdk-go-v2/service/codepipeline v1.31.0 // indirect github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.27.3 // indirect github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.24.3 // indirect github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.25.5 // indirect @@ -143,8 +144,8 @@ require ( github.com/aws/aws-sdk-go-v2/service/dataexchange v1.30.3 // indirect github.com/aws/aws-sdk-go-v2/service/datapipeline v1.23.3 // indirect github.com/aws/aws-sdk-go-v2/service/datasync v1.40.3 // indirect - github.com/aws/aws-sdk-go-v2/service/datazone v1.15.0 // indirect - github.com/aws/aws-sdk-go-v2/service/dax v1.21.3 // indirect + github.com/aws/aws-sdk-go-v2/service/datazone v1.16.0 // indirect + github.com/aws/aws-sdk-go-v2/service/dax v1.21.4 // indirect github.com/aws/aws-sdk-go-v2/service/detective v1.29.3 // indirect github.com/aws/aws-sdk-go-v2/service/devicefarm v1.25.2 // indirect github.com/aws/aws-sdk-go-v2/service/devopsguru v1.32.3 // indirect @@ -154,13 +155,13 @@ require ( github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.11.3 // indirect github.com/aws/aws-sdk-go-v2/service/drs v1.28.3 // indirect github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.4 // indirect - github.com/aws/aws-sdk-go-v2/service/ec2 v1.172.0 // indirect - github.com/aws/aws-sdk-go-v2/service/ecr v1.30.3 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.173.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ecr v1.31.0 // indirect github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.25.3 // indirect github.com/aws/aws-sdk-go-v2/service/ecs v1.44.3 // indirect github.com/aws/aws-sdk-go-v2/service/efs v1.31.3 // indirect - github.com/aws/aws-sdk-go-v2/service/eks v1.46.2 // indirect - github.com/aws/aws-sdk-go-v2/service/elasticache v1.40.3 // indirect + github.com/aws/aws-sdk-go-v2/service/eks v1.47.0 // indirect + github.com/aws/aws-sdk-go-v2/service/elasticache v1.40.5 // indirect github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.26.2 // indirect github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.26.3 // indirect github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.25.3 // indirect @@ -208,7 +209,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/lakeformation v1.35.3 // indirect github.com/aws/aws-sdk-go-v2/service/lambda v1.56.3 // indirect github.com/aws/aws-sdk-go-v2/service/launchwizard v1.6.3 // indirect - github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.45.3 // indirect + github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.46.0 // indirect github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.3 // indirect github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.29.3 // indirect github.com/aws/aws-sdk-go-v2/service/m2 v1.15.3 // indirect @@ -221,7 +222,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/mq v1.25.3 // indirect github.com/aws/aws-sdk-go-v2/service/mwaa v1.29.4 // indirect github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.10.3 // indirect - github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.40.4 // indirect + github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.41.0 // indirect github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.5.3 // indirect github.com/aws/aws-sdk-go-v2/service/oam v1.13.3 // indirect github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.13.3 // indirect @@ -241,9 +242,10 @@ require ( github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.27.3 // indirect github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.21.0 // indirect github.com/aws/aws-sdk-go-v2/service/rekognition v1.43.2 // indirect + github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.23.3 // indirect github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.12.3 // indirect github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.24.3 // indirect - github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.14.0 // indirect github.com/aws/aws-sdk-go-v2/service/route53 v1.42.3 // indirect github.com/aws/aws-sdk-go-v2/service/route53domains v1.25.3 // indirect github.com/aws/aws-sdk-go-v2/service/route53profiles v1.2.3 // indirect @@ -259,7 +261,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.31.3 // indirect github.com/aws/aws-sdk-go-v2/service/servicequotas v1.23.3 // indirect github.com/aws/aws-sdk-go-v2/service/sesv2 v1.32.3 // indirect - github.com/aws/aws-sdk-go-v2/service/sfn v1.29.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sfn v1.30.0 // indirect github.com/aws/aws-sdk-go-v2/service/shield v1.27.3 // indirect github.com/aws/aws-sdk-go-v2/service/signer v1.24.3 // indirect github.com/aws/aws-sdk-go-v2/service/sns v1.31.3 // indirect @@ -269,8 +271,9 @@ require ( github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.32.3 // indirect github.com/aws/aws-sdk-go-v2/service/ssmsap v1.15.3 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 // indirect - github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.27.3 // indirect + github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.27.4 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 // indirect + github.com/aws/aws-sdk-go-v2/service/storagegateway v1.31.3 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 // indirect github.com/aws/aws-sdk-go-v2/service/swf v1.25.3 // indirect github.com/aws/aws-sdk-go-v2/service/synthetics v1.26.3 // indirect @@ -284,7 +287,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/wafregional v1.23.3 // indirect github.com/aws/aws-sdk-go-v2/service/wafv2 v1.51.4 // indirect github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.32.3 // indirect - github.com/aws/aws-sdk-go-v2/service/workspaces v1.44.2 // indirect + github.com/aws/aws-sdk-go-v2/service/workspaces v1.44.3 // indirect github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.21.3 // indirect github.com/aws/aws-sdk-go-v2/service/xray v1.27.3 // indirect github.com/aws/smithy-go v1.20.3 // indirect diff --git a/provider/go.sum b/provider/go.sum index 4a95391827b..9e41ddb5091 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -1234,8 +1234,8 @@ github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3A github.com/aws/aws-sdk-go v1.25.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.55.2 h1:/2OFM8uFfK9e+cqHTw9YPrvTzIXT2XkFGXRM7WbJb7E= -github.com/aws/aws-sdk-go v1.55.2/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= +github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= +github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY= github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 h1:tW1/Rkad38LA15X4UQtjXZXNKsCgkshC3EbmcUmghTg= @@ -1280,16 +1280,18 @@ github.com/aws/aws-sdk-go-v2/service/appflow v1.43.3 h1:zD7Md/MQTUfa83LgDmaKGHTL github.com/aws/aws-sdk-go-v2/service/appflow v1.43.3/go.mod h1:2b2pJQjTVLfBIzXs9TphXy1zJyRvNp34kbBgrnz4ByI= github.com/aws/aws-sdk-go-v2/service/appintegrations v1.27.3 h1:joEF6jGgq/6aHp4MEHidJyOfqWrwqJpjxHYfcocjNsU= github.com/aws/aws-sdk-go-v2/service/appintegrations v1.27.3/go.mod h1:7q06vKzUfBAZZrIfii6V8KC/+PmVNzNL2opqo9ivUMk= -github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.30.4 h1:qPr8FF0Jo4AIBcxb8gFmYcOW/zlsQX4iv8WkOGDm/F8= -github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.30.4/go.mod h1:gNFF1rFmR0dVaBfehDuil+nuTqwzdJexrcvKaDY2JU8= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.31.0 h1:rAAYERh5azv3zFgoEczNyNmUqfckRyiTKsuk/rwzvDM= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.31.0/go.mod h1:gNFF1rFmR0dVaBfehDuil+nuTqwzdJexrcvKaDY2JU8= github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.26.3 h1:G7hP9np1L0ykj02CFQgkqdZERUmHCXdw8WmR5pW2pHM= github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.26.3/go.mod h1:NU+zX7v6CGH1X2Lz+lg3EqDjdqOgiCe2MjtobaToi6o= -github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.2.3 h1:TzO+pIk4UFmMTrHRsrqyOO3qUBxV4EYyEOFYjN1I7aI= -github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.2.3/go.mod h1:xN0wvFa9G1ENYN0RbajUQ8VN3LMzyL3rcu2yP08cSMs= +github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.3.0 h1:P0tz3MXeOJogLI/JPQnyn6lWmSvCLQU/d6a4CQGetRc= +github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.3.0/go.mod h1:xN0wvFa9G1ENYN0RbajUQ8VN3LMzyL3rcu2yP08cSMs= +github.com/aws/aws-sdk-go-v2/service/appmesh v1.27.3 h1:UorKcN0SsvTcL4CGZsh2xcK3H+zP09us6NgS2g5MFIU= +github.com/aws/aws-sdk-go-v2/service/appmesh v1.27.3/go.mod h1:Jei7cWyXVkr10MXWBHbbFDIzDWEsVRGDicGNE2Kh05M= github.com/aws/aws-sdk-go-v2/service/apprunner v1.30.3 h1:x6wptcqKbH2eQw7v43MI25ILW3OtIyYwZ9gifEM0DW8= github.com/aws/aws-sdk-go-v2/service/apprunner v1.30.3/go.mod h1:buTv8bJjlKxqALyK7/2G1206H/YYllu0R/F9Hz0rhv4= -github.com/aws/aws-sdk-go-v2/service/appstream v1.36.3 h1:msS6jU0f3kTgLfUQk7JxazMbfwG5/RbsOwiwXDBO9IU= -github.com/aws/aws-sdk-go-v2/service/appstream v1.36.3/go.mod h1:zgB9SASIAI0KWFuUSlo9pGC37f6DDjh1ZJfZEhQcPhU= +github.com/aws/aws-sdk-go-v2/service/appstream v1.37.0 h1:novlmw4mzemK9FHfneoni0pG0eCPISgeW72apbWSxdY= +github.com/aws/aws-sdk-go-v2/service/appstream v1.37.0/go.mod h1:zgB9SASIAI0KWFuUSlo9pGC37f6DDjh1ZJfZEhQcPhU= github.com/aws/aws-sdk-go-v2/service/appsync v1.35.0 h1:JAfFXlcC/DzLu6+5QOMAHCCq0spH59Ex00idQUyWkyM= github.com/aws/aws-sdk-go-v2/service/appsync v1.35.0/go.mod h1:1BIEiY+76rNP8PEcv/Iyt7ybml38JqitIbrHfMDEYb8= github.com/aws/aws-sdk-go-v2/service/athena v1.44.3 h1:T2tJUqFEs8+2944NHspI3dRFELzKH4HfPXdrrIy18WA= @@ -1348,16 +1350,16 @@ github.com/aws/aws-sdk-go-v2/service/codebuild v1.40.3 h1:v+CiUB5RsmyRpGQ5Tddwn3 github.com/aws/aws-sdk-go-v2/service/codebuild v1.40.3/go.mod h1:HDiBVjDHX2n7UGFgynZLkVGPXvEnurxlEeaxPF/Ql/0= github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.15.3 h1:Bz3QJAdZd1z1rxlllKMl0s5y8kjbryqeMhlX57XJ5q8= github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.15.3/go.mod h1:R3dXCLxoYZu1zDODLw810Je3DOydgMUC2MZqyf8Gi9g= -github.com/aws/aws-sdk-go-v2/service/codecommit v1.24.3 h1:fqMQmtdFtZkPgCFKn4S9xp21RSCfdR3mytel6zfAzaQ= -github.com/aws/aws-sdk-go-v2/service/codecommit v1.24.3/go.mod h1:VgBrrInGfpFZyyCfVJ+EhV57+I924PItEJ4/yqT34u8= +github.com/aws/aws-sdk-go-v2/service/codecommit v1.25.0 h1:EyXii3hsD7M6mLoZjVbnIo14NI+ig8lopPGYVua/a+M= +github.com/aws/aws-sdk-go-v2/service/codecommit v1.25.0/go.mod h1:VgBrrInGfpFZyyCfVJ+EhV57+I924PItEJ4/yqT34u8= github.com/aws/aws-sdk-go-v2/service/codedeploy v1.27.3 h1:MSA1lrc/3I1rDQtLKmCe0P3J/jgc39jmN3SZBFVfJxA= github.com/aws/aws-sdk-go-v2/service/codedeploy v1.27.3/go.mod h1:Zqk3aokH+BfnsAfJl10gz9zWU3TC28e5rR5N/U7yYDk= github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.22.3 h1:SLX2POpbXZne1+f9RmdqEhof4p5zCpJRIt/ch4R3/bU= github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.22.3/go.mod h1:n/bcMFxX+woGslg9MazSiTs5FIPDXozv1F/TvjbIZeA= github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.27.3 h1:Fx4bbX53SzG2flM5fJHFgJ3fA7WpWohTwc4Q5np0ZYU= github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.27.3/go.mod h1:FNcnCnqWpfricoUGPTi5AoMpDp0UF4xOtS7hvdRUz38= -github.com/aws/aws-sdk-go-v2/service/codepipeline v1.30.3 h1:yoSnmI4DWImw7bFpv+9tMqcn0TtGZRLnyyvUE9j7KJw= -github.com/aws/aws-sdk-go-v2/service/codepipeline v1.30.3/go.mod h1:V/08OFKsq9jFlh0zb5WC3AvBXhPgTbMfoVrsWU0gKGg= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.31.0 h1:7H+vhjW3reojEWyXeM4BRtUhRyRDA9m2sydHfEvecgo= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.31.0/go.mod h1:V/08OFKsq9jFlh0zb5WC3AvBXhPgTbMfoVrsWU0gKGg= github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.27.3 h1:ZuvuMAG2sgoruSgJ/rxLOZWtK2kkyn225YphvpOvPDc= github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.27.3/go.mod h1:lhFfISGURSZzi/OQYyc94YoGXu3FhMp1/3g4lANOktY= github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.24.3 h1:dOpVsTQ+KP4cISpU7i+djPuNxlmRuQtrDilqbC9qhDU= @@ -1394,10 +1396,10 @@ github.com/aws/aws-sdk-go-v2/service/datapipeline v1.23.3 h1:kA26fZh30b6kOZZIkxr github.com/aws/aws-sdk-go-v2/service/datapipeline v1.23.3/go.mod h1:9Z4AiKwAlu2eXOPFEDfkLV/wTpI9o2FX09M4l6E4VE4= github.com/aws/aws-sdk-go-v2/service/datasync v1.40.3 h1:ZrKMl8jsL5YHurOLf0YVLb7JBYxGtqQQAknJ5g4MTz4= github.com/aws/aws-sdk-go-v2/service/datasync v1.40.3/go.mod h1:+ObRlRcKO/p38yJSkpVZKlCU3t9PqXMORXC+xTkb9NU= -github.com/aws/aws-sdk-go-v2/service/datazone v1.15.0 h1:V0nzmfOqo7+N8Y3F52HpJYd8BDpvGHytVIPjkBHwENQ= -github.com/aws/aws-sdk-go-v2/service/datazone v1.15.0/go.mod h1:li7vb6Ip/zyT59298XmAhs+dtXR2GqHXQlIdgL3QycE= -github.com/aws/aws-sdk-go-v2/service/dax v1.21.3 h1:uGHbOU0lBxntNZ/+Y2HbVo//AVFdl/BpMz7viHf/r8M= -github.com/aws/aws-sdk-go-v2/service/dax v1.21.3/go.mod h1:FNgKx9JXy9L0bThUl86EMV9gwUgqf2eexpitcne/AXc= +github.com/aws/aws-sdk-go-v2/service/datazone v1.16.0 h1:F5Q7eERYDK7vHRh3A2WI0xa3eYMQtflSYMCIegKrNe4= +github.com/aws/aws-sdk-go-v2/service/datazone v1.16.0/go.mod h1:li7vb6Ip/zyT59298XmAhs+dtXR2GqHXQlIdgL3QycE= +github.com/aws/aws-sdk-go-v2/service/dax v1.21.4 h1:+SxL4MQSOIy2VF4MnUnAXArNg5CPUlHMwDH2QTrX/jw= +github.com/aws/aws-sdk-go-v2/service/dax v1.21.4/go.mod h1:FNgKx9JXy9L0bThUl86EMV9gwUgqf2eexpitcne/AXc= github.com/aws/aws-sdk-go-v2/service/detective v1.29.3 h1:HimZr2FJaLzxinq9QypFY2gGM+40pMWPwxB+ZNTkfNI= github.com/aws/aws-sdk-go-v2/service/detective v1.29.3/go.mod h1:fiEtdUerGX5RHS/upeHldpHKikvfQz1MJCgquNFQeDo= github.com/aws/aws-sdk-go-v2/service/devicefarm v1.25.2 h1:DSv0r8nKo8+ix2h5Rz/Zl62kkJPRxXIEQzmRI3CQVpY= @@ -1416,26 +1418,26 @@ github.com/aws/aws-sdk-go-v2/service/drs v1.28.3 h1:ss4Ib/kWbYA4pveQtSOluDE/Kf0e github.com/aws/aws-sdk-go-v2/service/drs v1.28.3/go.mod h1:tjzPl3EOCkojHm9Q4y+Kuq7GGSJJw/P0UIqc4eHvtFI= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.4 h1:utG3S4T+X7nONPIpRoi1tVcQdAdJxntiVS2yolPJyXc= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.4/go.mod h1:q9vzW3Xr1KEXa8n4waHiFt1PrppNDlMymlYP+xpsFbY= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.172.0 h1:lJjLKG92RyKIIYujVvulR3JpVjr3yxaU34nwXCq8K2o= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.172.0/go.mod h1:o6QDjdVKpP5EF0dp/VlvqckzuSDATr1rLdHt3A5m0YY= -github.com/aws/aws-sdk-go-v2/service/ecr v1.30.3 h1:+v2hv29pWaVDASIScHuUhDC93nqJGVlGf6cujrJMHZE= -github.com/aws/aws-sdk-go-v2/service/ecr v1.30.3/go.mod h1:RhaP7Wil0+uuuhiE4FzOOEFZwkmFAk1ZflXzK+O3ptU= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.173.0 h1:ta62lid9JkIpKZtZZXSj6rP2AqY5x1qYGq53ffxqD9Q= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.173.0/go.mod h1:o6QDjdVKpP5EF0dp/VlvqckzuSDATr1rLdHt3A5m0YY= +github.com/aws/aws-sdk-go-v2/service/ecr v1.31.0 h1:vi/MwojjLGATEEUFn2GEdLiom7CFlB+qCIx4tDWqKfQ= +github.com/aws/aws-sdk-go-v2/service/ecr v1.31.0/go.mod h1:RhaP7Wil0+uuuhiE4FzOOEFZwkmFAk1ZflXzK+O3ptU= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.25.3 h1:n2eqzO9VabUkd77b88Hos6OEtbGohB/TRrtXLTZi38Y= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.25.3/go.mod h1:Oy3yHBGkKtTmsn6iJGEZxytzZQrEvoFRWldB4XmzlO4= github.com/aws/aws-sdk-go-v2/service/ecs v1.44.3 h1:JkVDQ9mfUSwMOGWIEmyB74mIznjKnHykJSq3uwusBBs= github.com/aws/aws-sdk-go-v2/service/ecs v1.44.3/go.mod h1:MsQWy/90Xwn3cy5u+eiiXqC521xIm21wOODIweLo4hs= github.com/aws/aws-sdk-go-v2/service/efs v1.31.3 h1:vHNTbv0pFB/E19MokZcWAxZIggWgcLlcixNePBe6iZc= github.com/aws/aws-sdk-go-v2/service/efs v1.31.3/go.mod h1:P1X7sDHKpqZCLac7bRsFF/EN2REOgmeKStQTa14FpEA= -github.com/aws/aws-sdk-go-v2/service/eks v1.46.2 h1:byyz/tBy/uGyucr/QLE1UmTuGaJx9ge19aWUZCiOMCc= -github.com/aws/aws-sdk-go-v2/service/eks v1.46.2/go.mod h1:awleuSoavuUt32hemzWdSrI47zq7slFtIj8St07EXpE= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.40.3 h1:nmEN5lGIAShc0nNFjvUk2/YYlsTSwX2n1XF37Av93Yw= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.40.3/go.mod h1:OcUtpbcNsyMdA/Wv5XenKl8aG3yrqA6HVIOF7ms+Ikc= +github.com/aws/aws-sdk-go-v2/service/eks v1.47.0 h1:u0VeIQ02COfhmp37ub8zv29bdRtosCYzXoWd+QRebbY= +github.com/aws/aws-sdk-go-v2/service/eks v1.47.0/go.mod h1:awleuSoavuUt32hemzWdSrI47zq7slFtIj8St07EXpE= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.40.5 h1:SIr8tXccDSncRPMK4Fifl9r6sBqHiHSFepSdIFxSfE8= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.40.5/go.mod h1:OcUtpbcNsyMdA/Wv5XenKl8aG3yrqA6HVIOF7ms+Ikc= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.26.2 h1:OA2kqnEcSqpnznO4hb4MKDXxeCRuEkADGgnihLwvn4E= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.26.2/go.mod h1:N/YWNrjILpIoai7cZ4Uq2KCNvBPf25Y+vIhbm9QpwDc= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.26.3 h1:5B2Dq2zy/hgtEO3wITnOZiyh6e+GyuHTGw6bK/8+L3w= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.26.3/go.mod h1:mgU2kG+D5ybtfGhEuZRW8usYOGrNSgsimRt/hOSI65s= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.33.3 h1:yiBmRRlVwehTN2TF0wbUkM7BluYFOLZU/U2SeQHE+q8= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.33.3/go.mod h1:L5bVuO4PeXuDuMYZfL3IW69E6mz6PDCYpp6IKDlcLMA= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.34.0 h1:8rDRtPOu3ax8jEctw7G926JQlnFdhZZA4KJzQ+4ks3Q= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.34.0/go.mod h1:L5bVuO4PeXuDuMYZfL3IW69E6mz6PDCYpp6IKDlcLMA= github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.25.3 h1:zBRYKbRPym+K+eA4gJ5yP4GNZeBgpScuCmNN2E4RV+8= github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.25.3/go.mod h1:gcxottKSKiMNTNYkuor9kcKxyt0Z5ZG1SsdvNH6L5o8= github.com/aws/aws-sdk-go-v2/service/emr v1.42.2 h1:j3aHjEsxFGCNGOCJjJM6AtPhdvn1pw2i2hGqxLU0qeI= @@ -1526,8 +1528,8 @@ github.com/aws/aws-sdk-go-v2/service/lambda v1.56.3 h1:r/y4nQOln25cbjrD8Wmzhhvnv github.com/aws/aws-sdk-go-v2/service/lambda v1.56.3/go.mod h1:/4Vaddp+wJc1AA8ViAqwWKAcYykPV+ZplhmLQuq3RbQ= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.6.3 h1:HlZn+zJoCEFuUvKLGbGXVIwXp3XA1xvLf/udp7ABDvk= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.6.3/go.mod h1:IJIHGsE1X4tRCw3s+SMG0NlIQM4yM7rlj5CfUDqT/+M= -github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.45.3 h1:sZwjTNfuXXk3Fyor/bEpjcznTD1+f6OEYxONrAU2sAc= -github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.45.3/go.mod h1:GE1lDQwM3Dm7Fysaet+yeNanYwwTvfLIUlK3P/owUw8= +github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.46.0 h1:xA65FxW3dErPwbSXxqfvS4nddclWOqSNGXfy9f32rEU= +github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.46.0/go.mod h1:GE1lDQwM3Dm7Fysaet+yeNanYwwTvfLIUlK3P/owUw8= github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.3 h1:dy4sbyGy7BS4c0KaPZwg1P5ZP+lW+auTVcPiwrmbn8M= github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.3/go.mod h1:EMgqMhof+RuaYvQavxKC0ZWvP7yB4B4NJhP+dbm13u0= github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.29.3 h1:UJEd/gP0jzWDfr4f/3TPKSls8MuomApfPap1CS/PxMY= @@ -1552,8 +1554,8 @@ github.com/aws/aws-sdk-go-v2/service/mwaa v1.29.4 h1:lptYTP7Br5zll9USf2aKY1ZlN69 github.com/aws/aws-sdk-go-v2/service/mwaa v1.29.4/go.mod h1:mtgvj3nNI+LiRNT07JaHbTh6E/y8QRrClvd+/GMhMS4= github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.10.3 h1:XEbvRhi+ELazJaqh8k0KgTZrAgXM3rmR0hsGPTIpUIo= github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.10.3/go.mod h1:tfCOS8E/SwIkqHHGgpwRZTly3ZQxcsORZPEVBKMkbx4= -github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.40.4 h1:NxceAAooi4+0/rIKXKqFUOVoT1rrVZKo6sLFuyITWPs= -github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.40.4/go.mod h1:Y9mINPJv+o9q8Ztr5/PRh2C1Iynik64IhPzwe2ERGqQ= +github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.41.0 h1:mvbaX3/zHNXRHqHNuk6NOS3JkaxqxPYLqWC4v7tObTI= +github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.41.0/go.mod h1:Y9mINPJv+o9q8Ztr5/PRh2C1Iynik64IhPzwe2ERGqQ= github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.5.3 h1:I+m+rITTdVA9BNJeuCzYgMQjqbUE10xcY0OqgBvFEFE= github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.5.3/go.mod h1:R+4X5haYg3eRWYb99y+m1UhlVjFrHNlcfl3WES5e1oQ= github.com/aws/aws-sdk-go-v2/service/oam v1.13.3 h1:KCbGN36Q/qQ27mv+/4BSax0q6/KSAxh3K3R+gRhNHwg= @@ -1592,14 +1594,16 @@ github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.21.0 h1:tXS6MbDl8H0qz github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.21.0/go.mod h1:oJRMDbpdkGsrRiSmJUumhj4KuXdP4QN9A5AK1rE0xps= github.com/aws/aws-sdk-go-v2/service/rekognition v1.43.2 h1:nrR1xZ6QoW7lUvFmLHOwTK2n25nnuPhP2f++C3DlPRc= github.com/aws/aws-sdk-go-v2/service/rekognition v1.43.2/go.mod h1:UkvOY/p1SKtJgzvwmlPnrFWOP2kj6efrbcbQHFy9qvM= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.23.3 h1:zpPWrS5Ro/YWRBykhliWh/Wk5YQxT824XPjTODCQbrc= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.23.3/go.mod h1:AnmGmmCQ14ONhL5AwIFFeHkLyC9O1SKMCoiQ++h6QGc= github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.12.3 h1:GEkqXpMrNF6UpC8edjE66HZgVpqppvxxMRhHcBbyQiU= github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.12.3/go.mod h1:PQCEcRWQIPD+uqrqSaLJDfveDYqHTPaimym1+5WtvMU= github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.24.3 h1:lxYeMxHTz8TculPM7bxM4uZxJpAH394xY215ub595H8= github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.24.3/go.mod h1:wyzvCa9oNmh3Ejs0kM63IR7lq9Vie9bcg2YIg+p9alY= github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.23.3 h1:ByynKMsGZGmpUpnQ99y+lS7VxZrNt3mdagCnHd011Kk= github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.23.3/go.mod h1:ZR4h87npHPuVQ2SEeoWMe+CO/HcS9g2iYMLnT5HawW8= -github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.13.3 h1:3lqKckUrVhC86nI5d/7suyv4sBhUJgACHfbs8qTj6+g= -github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.13.3/go.mod h1:7IIMPfX6TzfxRIJIp1NLYWFkApDOMnlb5XrynzpxMkA= +github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.14.0 h1:LoDKjG6X8Hj/Kiqmgpu/jW52GDTeToC6BehMbgHsZkg= +github.com/aws/aws-sdk-go-v2/service/rolesanywhere v1.14.0/go.mod h1:7IIMPfX6TzfxRIJIp1NLYWFkApDOMnlb5XrynzpxMkA= github.com/aws/aws-sdk-go-v2/service/route53 v1.42.3 h1:MmLCRqP4U4Cw9gJ4bNrCG0mWqEtBlmAVleyelcHARMU= github.com/aws/aws-sdk-go-v2/service/route53 v1.42.3/go.mod h1:AMPjK2YnRh0YgOID3PqhJA1BRNfXDfGOnSsKHtAe8yA= github.com/aws/aws-sdk-go-v2/service/route53domains v1.25.3 h1:VGLIgiClxmwxBpGzHERgNgwJMukHZpLcQZqJuQYjAiM= @@ -1632,8 +1636,8 @@ github.com/aws/aws-sdk-go-v2/service/servicequotas v1.23.3 h1:J6R7Mo3nDY9BmmG4V9 github.com/aws/aws-sdk-go-v2/service/servicequotas v1.23.3/go.mod h1:be52Ycqv581QoIOZzHfZFWlJLcGAI2M/ItUSlx7lLp0= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.32.3 h1:DLJCsgYZoNIIIFnWd3MXyg9ehgnlihOKDEvOAkzGRMc= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.32.3/go.mod h1:klyMXN+cNAndrESWMyT7LA8Ll0I6Nc03jxfSkeuU/Xg= -github.com/aws/aws-sdk-go-v2/service/sfn v1.29.3 h1:7BK+k08c5r1oqqHeb6ye0affEQQJ/fimBTGZSjmpjwk= -github.com/aws/aws-sdk-go-v2/service/sfn v1.29.3/go.mod h1:+mtHHxsylrf+kjxcbvfnu6jtyTT8Fa9BlqjQk5XJZ80= +github.com/aws/aws-sdk-go-v2/service/sfn v1.30.0 h1:FIprHGk9sztofQcgyHrIOh4QQo0rO1kjHmksxDrXMtg= +github.com/aws/aws-sdk-go-v2/service/sfn v1.30.0/go.mod h1:+mtHHxsylrf+kjxcbvfnu6jtyTT8Fa9BlqjQk5XJZ80= github.com/aws/aws-sdk-go-v2/service/shield v1.27.3 h1:SfjI6FuphzspGPvcRD8hjMD6wLUAE6vtJLGrui19j2s= github.com/aws/aws-sdk-go-v2/service/shield v1.27.3/go.mod h1:JpxjPa91y1hRb3G8xxzhOQFcK/r90it41jA/hD0q+Gg= github.com/aws/aws-sdk-go-v2/service/signer v1.24.3 h1:vN91JPGjBc5imkkpIqVWolvFxZygpDlRUovx221Wid8= @@ -1652,10 +1656,12 @@ github.com/aws/aws-sdk-go-v2/service/ssmsap v1.15.3 h1:vBcoorWl+c4r5un837H8fhLoS github.com/aws/aws-sdk-go-v2/service/ssmsap v1.15.3/go.mod h1:Mq0FruBai8A9f7fpzjcfD+S+y0I4DkZTygb3HxuqDB4= github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 h1:BXx0ZIxvrJdSgSvKTZ+yRBeSqqgPM89VPlulEcl37tM= github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= -github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.27.3 h1:pBE7FzR3AUpauidRUITPlDWTQ4hHktI649xZt3e/wKM= -github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.27.3/go.mod h1:EyoPT+dUT5zqspxSub9KHDWOZyIP30bPgIavBvGGVz0= +github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.27.4 h1:oXiKn9jcx+8yLLuwm8TO6qhdu2JiyIWLKxp+K80cZ4k= +github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.27.4/go.mod h1:EyoPT+dUT5zqspxSub9KHDWOZyIP30bPgIavBvGGVz0= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw= +github.com/aws/aws-sdk-go-v2/service/storagegateway v1.31.3 h1:0hdxWCS8mM4qsZI3GldBkXeee4X25aC9wZGQhpbt6w8= +github.com/aws/aws-sdk-go-v2/service/storagegateway v1.31.3/go.mod h1:N2tZQtDCR/Ls4o1pH6neRhhlkhKNE6SoruLn6nTpnzU= github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudrvuKpDKgMVRlepGE= github.com/aws/aws-sdk-go-v2/service/sts v1.30.3/go.mod h1:zwySh8fpFyXp9yOr/KVzxOl8SRqgf/IDw5aUt9UKFcQ= github.com/aws/aws-sdk-go-v2/service/swf v1.25.3 h1:7zYsHA9ORjiCHYzTJf0g+gwo3mPpn2XbMlWQreiXWdM= @@ -1682,8 +1688,8 @@ github.com/aws/aws-sdk-go-v2/service/wafv2 v1.51.4 h1:1khBA5uryBRJoCb4G2iR5RT06B github.com/aws/aws-sdk-go-v2/service/wafv2 v1.51.4/go.mod h1:QpFImaPGKNwa+MiZ+oo6LbV1PVQBapc0CnrAMRScoxM= github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.32.3 h1:BjPTq4qiR/Ywu3yf3DeGepCj5RB1c4rtEUmE62bmkus= github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.32.3/go.mod h1:jeL9apgA3x3fwH3ZkaDPIfYcXZUlmCXNrU4o+6oY4oM= -github.com/aws/aws-sdk-go-v2/service/workspaces v1.44.2 h1:xqlHduaOQOIstwjydeUA3MyQOsX78Xz+0xbkc/Lwi18= -github.com/aws/aws-sdk-go-v2/service/workspaces v1.44.2/go.mod h1:YRGgDr23EJC+32pPpWnoVB2p4JP3u5xASobpmoOlhEo= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.44.3 h1:zWbhDgri3gGMLl0mdrXIT6ocQ6lg6vSxPKRPJxhrZG4= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.44.3/go.mod h1:YRGgDr23EJC+32pPpWnoVB2p4JP3u5xASobpmoOlhEo= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.21.3 h1:fZVJVU+fgDbHDZpHv447C43ZM9E9QHbj7reT6tB19FA= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.21.3/go.mod h1:CWln0RlRf0Cc4Csr4HkyXI6BkkIujyTeWuwTo3hijP0= github.com/aws/aws-sdk-go-v2/service/xray v1.27.3 h1:0jSgvovW7R95P8XJiGxYfrnxdryQyClvebJeYbUlecw= diff --git a/provider/replacements.json b/provider/replacements.json index 168a4c0d991..a737da4a66e 100644 --- a/provider/replacements.json +++ b/provider/replacements.json @@ -811,6 +811,10 @@ { "old": "~> **NOTE:** Terraform will detect changes in the `aws_elasticache_user_group` since `aws_elasticache_user_group_association` changes the user IDs associated with the user group. You can ignore these changes with the `lifecycle` `ignore_changes` meta argument as shown in the example.", "new": "~> **NOTE:** The provider will detect changes in the `aws_elasticache_user_group` since `aws_elasticache_user_group_association` changes the user IDs associated with the user group. You can ignore these changes with the `ignore_changes` option as shown in the example." + }, + { + "old": "~> Terraform will detect changes in the `aws_elasticache_user_group` since `aws_elasticache_user_group_association` changes the user IDs associated with the user group. You can ignore these changes with the `lifecycle` `ignore_changes` meta argument as shown in the example.\n", + "new": "~> TODO will detect changes in the `aws_elasticache_user_group` since `aws_elasticache_user_group_association` changes the user IDs associated with the user group. You can ignore these changes with the `lifecycle` `ignore_changes` meta argument as shown in the example.\n" } ], "elasticsearch_domain.html.markdown": [ diff --git a/provider/resources.go b/provider/resources.go index 3b95d0eacb1..09dec9728d6 100644 --- a/provider/resources.go +++ b/provider/resources.go @@ -241,6 +241,7 @@ const ( storagegatewayMod = "StorageGateway" // Storage Gateway swfMod = "Swf" // Simple Workflow Service (SWF) syntheticsMod = "Synthetics" // Synthetics + timestreamInfluxDBMod = "TimestreamInfluxDB" // Timestream Influx DB timestreamWriteMod = "TimestreamWrite" // Timestream Write transcribeMod = "Transcribe" // Transcribe transferMod = "Transfer" // Transfer Service @@ -299,6 +300,7 @@ var moduleMap = map[string]string{ "bcmdataexports": bcmDataMod, "budgets": budgetsMod, "ce": costExplorerMod, + "chatbot": chatbotMod, "chime": chimeMod, "chimesdkmediapipelines": chimeSDKMediaPipelinesMod, "cleanrooms": "CleanRooms", @@ -462,6 +464,7 @@ var moduleMap = map[string]string{ "storagegateway": storagegatewayMod, "swf": swfMod, "synthetics": syntheticsMod, + "timestreaminfluxdb": timestreamInfluxDBMod, "timestreamwrite": timestreamWriteMod, "transcribe": transcribeMod, "transfer": transferMod, @@ -6166,4 +6169,10 @@ func setupComputedIDs(prov *tfbridge.ProviderInfo) { prov.Resources["aws_rekognition_stream_processor"].ComputeID = func(ctx context.Context, state resource.PropertyMap) (resource.ID, error) { return attr(state, "name"), nil } + prov.Resources["aws_chatbot_slack_channel_configuration"].ComputeID = func(ctx context.Context, state resource.PropertyMap) (resource.ID, error) { + return attr(state, "configurationName"), nil + } + prov.Resources["aws_chatbot_teams_channel_configuration"].ComputeID = func(ctx context.Context, state resource.PropertyMap) (resource.ID, error) { + return attr(state, "configurationName"), nil + } } diff --git a/sdk/dotnet/AppSync/GraphQLApi.cs b/sdk/dotnet/AppSync/GraphQLApi.cs index 9a05c1092ad..5a90f43219b 100644 --- a/sdk/dotnet/AppSync/GraphQLApi.cs +++ b/sdk/dotnet/AppSync/GraphQLApi.cs @@ -30,6 +30,12 @@ public partial class GraphQLApi : global::Pulumi.CustomResource [Output("authenticationType")] public Output AuthenticationType { get; private set; } = null!; + /// + /// Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + /// + [Output("enhancedMetricsConfig")] + public Output EnhancedMetricsConfig { get; private set; } = null!; + /// /// Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). /// @@ -50,6 +56,8 @@ public partial class GraphQLApi : global::Pulumi.CustomResource /// /// User-supplied name for the GraphSQL API. + /// + /// The following arguments are optional: /// [Output("name")] public Output Name { get; private set; } = null!; @@ -180,6 +188,12 @@ public InputList Addition [Input("authenticationType", required: true)] public Input AuthenticationType { get; set; } = null!; + /// + /// Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + /// + [Input("enhancedMetricsConfig")] + public Input? EnhancedMetricsConfig { get; set; } + /// /// Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). /// @@ -200,6 +214,8 @@ public InputList Addition /// /// User-supplied name for the GraphSQL API. + /// + /// The following arguments are optional: /// [Input("name")] public Input? Name { get; set; } @@ -292,6 +308,12 @@ public InputList Addit [Input("authenticationType")] public Input? AuthenticationType { get; set; } + /// + /// Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + /// + [Input("enhancedMetricsConfig")] + public Input? EnhancedMetricsConfig { get; set; } + /// /// Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). /// @@ -312,6 +334,8 @@ public InputList Addit /// /// User-supplied name for the GraphSQL API. + /// + /// The following arguments are optional: /// [Input("name")] public Input? Name { get; set; } diff --git a/sdk/dotnet/AppSync/Inputs/GraphQLApiEnhancedMetricsConfigArgs.cs b/sdk/dotnet/AppSync/Inputs/GraphQLApiEnhancedMetricsConfigArgs.cs new file mode 100644 index 00000000000..b2bd79097d5 --- /dev/null +++ b/sdk/dotnet/AppSync/Inputs/GraphQLApiEnhancedMetricsConfigArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.AppSync.Inputs +{ + + public sealed class GraphQLApiEnhancedMetricsConfigArgs : global::Pulumi.ResourceArgs + { + /// + /// How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + /// + [Input("dataSourceLevelMetricsBehavior", required: true)] + public Input DataSourceLevelMetricsBehavior { get; set; } = null!; + + /// + /// How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + /// + [Input("operationLevelMetricsConfig", required: true)] + public Input OperationLevelMetricsConfig { get; set; } = null!; + + /// + /// How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + /// + [Input("resolverLevelMetricsBehavior", required: true)] + public Input ResolverLevelMetricsBehavior { get; set; } = null!; + + public GraphQLApiEnhancedMetricsConfigArgs() + { + } + public static new GraphQLApiEnhancedMetricsConfigArgs Empty => new GraphQLApiEnhancedMetricsConfigArgs(); + } +} diff --git a/sdk/dotnet/AppSync/Inputs/GraphQLApiEnhancedMetricsConfigGetArgs.cs b/sdk/dotnet/AppSync/Inputs/GraphQLApiEnhancedMetricsConfigGetArgs.cs new file mode 100644 index 00000000000..47e7573a0b7 --- /dev/null +++ b/sdk/dotnet/AppSync/Inputs/GraphQLApiEnhancedMetricsConfigGetArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.AppSync.Inputs +{ + + public sealed class GraphQLApiEnhancedMetricsConfigGetArgs : global::Pulumi.ResourceArgs + { + /// + /// How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + /// + [Input("dataSourceLevelMetricsBehavior", required: true)] + public Input DataSourceLevelMetricsBehavior { get; set; } = null!; + + /// + /// How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + /// + [Input("operationLevelMetricsConfig", required: true)] + public Input OperationLevelMetricsConfig { get; set; } = null!; + + /// + /// How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + /// + [Input("resolverLevelMetricsBehavior", required: true)] + public Input ResolverLevelMetricsBehavior { get; set; } = null!; + + public GraphQLApiEnhancedMetricsConfigGetArgs() + { + } + public static new GraphQLApiEnhancedMetricsConfigGetArgs Empty => new GraphQLApiEnhancedMetricsConfigGetArgs(); + } +} diff --git a/sdk/dotnet/AppSync/Outputs/GraphQLApiEnhancedMetricsConfig.cs b/sdk/dotnet/AppSync/Outputs/GraphQLApiEnhancedMetricsConfig.cs new file mode 100644 index 00000000000..921c4ed5b37 --- /dev/null +++ b/sdk/dotnet/AppSync/Outputs/GraphQLApiEnhancedMetricsConfig.cs @@ -0,0 +1,42 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.AppSync.Outputs +{ + + [OutputType] + public sealed class GraphQLApiEnhancedMetricsConfig + { + /// + /// How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + /// + public readonly string DataSourceLevelMetricsBehavior; + /// + /// How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + /// + public readonly string OperationLevelMetricsConfig; + /// + /// How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + /// + public readonly string ResolverLevelMetricsBehavior; + + [OutputConstructor] + private GraphQLApiEnhancedMetricsConfig( + string dataSourceLevelMetricsBehavior, + + string operationLevelMetricsConfig, + + string resolverLevelMetricsBehavior) + { + DataSourceLevelMetricsBehavior = dataSourceLevelMetricsBehavior; + OperationLevelMetricsConfig = operationLevelMetricsConfig; + ResolverLevelMetricsBehavior = resolverLevelMetricsBehavior; + } + } +} diff --git a/sdk/dotnet/Chatbot/Inputs/SlackChannelConfigurationTimeoutsArgs.cs b/sdk/dotnet/Chatbot/Inputs/SlackChannelConfigurationTimeoutsArgs.cs new file mode 100644 index 00000000000..41d51276ccf --- /dev/null +++ b/sdk/dotnet/Chatbot/Inputs/SlackChannelConfigurationTimeoutsArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Chatbot.Inputs +{ + + public sealed class SlackChannelConfigurationTimeoutsArgs : global::Pulumi.ResourceArgs + { + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + [Input("create")] + public Input? Create { get; set; } + + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + /// + [Input("delete")] + public Input? Delete { get; set; } + + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + [Input("update")] + public Input? Update { get; set; } + + public SlackChannelConfigurationTimeoutsArgs() + { + } + public static new SlackChannelConfigurationTimeoutsArgs Empty => new SlackChannelConfigurationTimeoutsArgs(); + } +} diff --git a/sdk/dotnet/Chatbot/Inputs/SlackChannelConfigurationTimeoutsGetArgs.cs b/sdk/dotnet/Chatbot/Inputs/SlackChannelConfigurationTimeoutsGetArgs.cs new file mode 100644 index 00000000000..bff0bd36687 --- /dev/null +++ b/sdk/dotnet/Chatbot/Inputs/SlackChannelConfigurationTimeoutsGetArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Chatbot.Inputs +{ + + public sealed class SlackChannelConfigurationTimeoutsGetArgs : global::Pulumi.ResourceArgs + { + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + [Input("create")] + public Input? Create { get; set; } + + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + /// + [Input("delete")] + public Input? Delete { get; set; } + + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + [Input("update")] + public Input? Update { get; set; } + + public SlackChannelConfigurationTimeoutsGetArgs() + { + } + public static new SlackChannelConfigurationTimeoutsGetArgs Empty => new SlackChannelConfigurationTimeoutsGetArgs(); + } +} diff --git a/sdk/dotnet/Chatbot/Inputs/TeamsChannelConfigurationTimeoutsArgs.cs b/sdk/dotnet/Chatbot/Inputs/TeamsChannelConfigurationTimeoutsArgs.cs new file mode 100644 index 00000000000..2afb2819bcb --- /dev/null +++ b/sdk/dotnet/Chatbot/Inputs/TeamsChannelConfigurationTimeoutsArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Chatbot.Inputs +{ + + public sealed class TeamsChannelConfigurationTimeoutsArgs : global::Pulumi.ResourceArgs + { + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + [Input("create")] + public Input? Create { get; set; } + + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + /// + [Input("delete")] + public Input? Delete { get; set; } + + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + [Input("update")] + public Input? Update { get; set; } + + public TeamsChannelConfigurationTimeoutsArgs() + { + } + public static new TeamsChannelConfigurationTimeoutsArgs Empty => new TeamsChannelConfigurationTimeoutsArgs(); + } +} diff --git a/sdk/dotnet/Chatbot/Inputs/TeamsChannelConfigurationTimeoutsGetArgs.cs b/sdk/dotnet/Chatbot/Inputs/TeamsChannelConfigurationTimeoutsGetArgs.cs new file mode 100644 index 00000000000..54c78bf7b73 --- /dev/null +++ b/sdk/dotnet/Chatbot/Inputs/TeamsChannelConfigurationTimeoutsGetArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Chatbot.Inputs +{ + + public sealed class TeamsChannelConfigurationTimeoutsGetArgs : global::Pulumi.ResourceArgs + { + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + [Input("create")] + public Input? Create { get; set; } + + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + /// + [Input("delete")] + public Input? Delete { get; set; } + + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + [Input("update")] + public Input? Update { get; set; } + + public TeamsChannelConfigurationTimeoutsGetArgs() + { + } + public static new TeamsChannelConfigurationTimeoutsGetArgs Empty => new TeamsChannelConfigurationTimeoutsGetArgs(); + } +} diff --git a/sdk/dotnet/Chatbot/Outputs/SlackChannelConfigurationTimeouts.cs b/sdk/dotnet/Chatbot/Outputs/SlackChannelConfigurationTimeouts.cs new file mode 100644 index 00000000000..fa14f323320 --- /dev/null +++ b/sdk/dotnet/Chatbot/Outputs/SlackChannelConfigurationTimeouts.cs @@ -0,0 +1,42 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Chatbot.Outputs +{ + + [OutputType] + public sealed class SlackChannelConfigurationTimeouts + { + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + public readonly string? Create; + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + /// + public readonly string? Delete; + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + public readonly string? Update; + + [OutputConstructor] + private SlackChannelConfigurationTimeouts( + string? create, + + string? delete, + + string? update) + { + Create = create; + Delete = delete; + Update = update; + } + } +} diff --git a/sdk/dotnet/Chatbot/Outputs/TeamsChannelConfigurationTimeouts.cs b/sdk/dotnet/Chatbot/Outputs/TeamsChannelConfigurationTimeouts.cs new file mode 100644 index 00000000000..f8b5502b1c0 --- /dev/null +++ b/sdk/dotnet/Chatbot/Outputs/TeamsChannelConfigurationTimeouts.cs @@ -0,0 +1,42 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Chatbot.Outputs +{ + + [OutputType] + public sealed class TeamsChannelConfigurationTimeouts + { + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + public readonly string? Create; + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + /// + public readonly string? Delete; + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + public readonly string? Update; + + [OutputConstructor] + private TeamsChannelConfigurationTimeouts( + string? create, + + string? delete, + + string? update) + { + Create = create; + Delete = delete; + Update = update; + } + } +} diff --git a/sdk/dotnet/Chatbot/SlackChannelConfiguration.cs b/sdk/dotnet/Chatbot/SlackChannelConfiguration.cs new file mode 100644 index 00000000000..37fd42c2930 --- /dev/null +++ b/sdk/dotnet/Chatbot/SlackChannelConfiguration.cs @@ -0,0 +1,380 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Chatbot +{ + /// + /// Resource for managing an AWS Chatbot Slack Channel Configuration. + /// + /// ## Example Usage + /// + /// ### Basic Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var test = new Aws.Chatbot.SlackChannelConfiguration("test", new() + /// { + /// ConfigurationName = "min-slaka-kanal", + /// IamRoleArn = testAwsIamRole.Arn, + /// SlackChannelId = "C07EZ1ABC23", + /// SlackTeamId = "T07EA123LEP", + /// Tags = + /// { + /// { "Name", "min-slaka-kanal" }, + /// }, + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// Using `pulumi import`, import Chatbot Slack Channel Configuration using the `chat_configuration_arn`. For example: + /// + /// ```sh + /// $ pulumi import aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration example arn:aws:chatbot::012345678901:chat-configuration/slack-channel/min-slaka-kanal + /// ``` + /// + [AwsResourceType("aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration")] + public partial class SlackChannelConfiguration : global::Pulumi.CustomResource + { + /// + /// ARN of the Slack channel configuration. + /// + [Output("chatConfigurationArn")] + public Output ChatConfigurationArn { get; private set; } = null!; + + /// + /// Name of the Slack channel configuration. + /// + [Output("configurationName")] + public Output ConfigurationName { get; private set; } = null!; + + /// + /// List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + /// + [Output("guardrailPolicyArns")] + public Output> GuardrailPolicyArns { get; private set; } = null!; + + /// + /// User-defined role that AWS Chatbot assumes. This is not the service-linked role. + /// + [Output("iamRoleArn")] + public Output IamRoleArn { get; private set; } = null!; + + /// + /// Logging levels include `ERROR`, `INFO`, or `NONE`. + /// + [Output("loggingLevel")] + public Output LoggingLevel { get; private set; } = null!; + + /// + /// ID of the Slack channel. For example, `C07EZ1ABC23`. + /// + [Output("slackChannelId")] + public Output SlackChannelId { get; private set; } = null!; + + /// + /// Name of the Slack channel. + /// + [Output("slackChannelName")] + public Output SlackChannelName { get; private set; } = null!; + + /// + /// ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + /// + /// The following arguments are optional: + /// + [Output("slackTeamId")] + public Output SlackTeamId { get; private set; } = null!; + + /// + /// Name of the Slack team. + /// + [Output("slackTeamName")] + public Output SlackTeamName { get; private set; } = null!; + + /// + /// ARNs of the SNS topics that deliver notifications to AWS Chatbot. + /// + [Output("snsTopicArns")] + public Output> SnsTopicArns { get; private set; } = null!; + + /// + /// Map of tags assigned to the resource. + /// + [Output("tags")] + public Output?> Tags { get; private set; } = null!; + + /// + /// Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + /// + [Output("tagsAll")] + public Output> TagsAll { get; private set; } = null!; + + [Output("timeouts")] + public Output Timeouts { get; private set; } = null!; + + /// + /// Enables use of a user role requirement in your chat configuration. + /// + [Output("userAuthorizationRequired")] + public Output UserAuthorizationRequired { get; private set; } = null!; + + + /// + /// Create a SlackChannelConfiguration resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public SlackChannelConfiguration(string name, SlackChannelConfigurationArgs args, CustomResourceOptions? options = null) + : base("aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration", name, args ?? new SlackChannelConfigurationArgs(), MakeResourceOptions(options, "")) + { + } + + private SlackChannelConfiguration(string name, Input id, SlackChannelConfigurationState? state = null, CustomResourceOptions? options = null) + : base("aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing SlackChannelConfiguration resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static SlackChannelConfiguration Get(string name, Input id, SlackChannelConfigurationState? state = null, CustomResourceOptions? options = null) + { + return new SlackChannelConfiguration(name, id, state, options); + } + } + + public sealed class SlackChannelConfigurationArgs : global::Pulumi.ResourceArgs + { + /// + /// Name of the Slack channel configuration. + /// + [Input("configurationName", required: true)] + public Input ConfigurationName { get; set; } = null!; + + [Input("guardrailPolicyArns")] + private InputList? _guardrailPolicyArns; + + /// + /// List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + /// + public InputList GuardrailPolicyArns + { + get => _guardrailPolicyArns ?? (_guardrailPolicyArns = new InputList()); + set => _guardrailPolicyArns = value; + } + + /// + /// User-defined role that AWS Chatbot assumes. This is not the service-linked role. + /// + [Input("iamRoleArn", required: true)] + public Input IamRoleArn { get; set; } = null!; + + /// + /// Logging levels include `ERROR`, `INFO`, or `NONE`. + /// + [Input("loggingLevel")] + public Input? LoggingLevel { get; set; } + + /// + /// ID of the Slack channel. For example, `C07EZ1ABC23`. + /// + [Input("slackChannelId", required: true)] + public Input SlackChannelId { get; set; } = null!; + + /// + /// ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + /// + /// The following arguments are optional: + /// + [Input("slackTeamId", required: true)] + public Input SlackTeamId { get; set; } = null!; + + [Input("snsTopicArns")] + private InputList? _snsTopicArns; + + /// + /// ARNs of the SNS topics that deliver notifications to AWS Chatbot. + /// + public InputList SnsTopicArns + { + get => _snsTopicArns ?? (_snsTopicArns = new InputList()); + set => _snsTopicArns = value; + } + + [Input("tags")] + private InputMap? _tags; + + /// + /// Map of tags assigned to the resource. + /// + public InputMap Tags + { + get => _tags ?? (_tags = new InputMap()); + set => _tags = value; + } + + [Input("timeouts")] + public Input? Timeouts { get; set; } + + /// + /// Enables use of a user role requirement in your chat configuration. + /// + [Input("userAuthorizationRequired")] + public Input? UserAuthorizationRequired { get; set; } + + public SlackChannelConfigurationArgs() + { + } + public static new SlackChannelConfigurationArgs Empty => new SlackChannelConfigurationArgs(); + } + + public sealed class SlackChannelConfigurationState : global::Pulumi.ResourceArgs + { + /// + /// ARN of the Slack channel configuration. + /// + [Input("chatConfigurationArn")] + public Input? ChatConfigurationArn { get; set; } + + /// + /// Name of the Slack channel configuration. + /// + [Input("configurationName")] + public Input? ConfigurationName { get; set; } + + [Input("guardrailPolicyArns")] + private InputList? _guardrailPolicyArns; + + /// + /// List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + /// + public InputList GuardrailPolicyArns + { + get => _guardrailPolicyArns ?? (_guardrailPolicyArns = new InputList()); + set => _guardrailPolicyArns = value; + } + + /// + /// User-defined role that AWS Chatbot assumes. This is not the service-linked role. + /// + [Input("iamRoleArn")] + public Input? IamRoleArn { get; set; } + + /// + /// Logging levels include `ERROR`, `INFO`, or `NONE`. + /// + [Input("loggingLevel")] + public Input? LoggingLevel { get; set; } + + /// + /// ID of the Slack channel. For example, `C07EZ1ABC23`. + /// + [Input("slackChannelId")] + public Input? SlackChannelId { get; set; } + + /// + /// Name of the Slack channel. + /// + [Input("slackChannelName")] + public Input? SlackChannelName { get; set; } + + /// + /// ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + /// + /// The following arguments are optional: + /// + [Input("slackTeamId")] + public Input? SlackTeamId { get; set; } + + /// + /// Name of the Slack team. + /// + [Input("slackTeamName")] + public Input? SlackTeamName { get; set; } + + [Input("snsTopicArns")] + private InputList? _snsTopicArns; + + /// + /// ARNs of the SNS topics that deliver notifications to AWS Chatbot. + /// + public InputList SnsTopicArns + { + get => _snsTopicArns ?? (_snsTopicArns = new InputList()); + set => _snsTopicArns = value; + } + + [Input("tags")] + private InputMap? _tags; + + /// + /// Map of tags assigned to the resource. + /// + public InputMap Tags + { + get => _tags ?? (_tags = new InputMap()); + set => _tags = value; + } + + [Input("tagsAll")] + private InputMap? _tagsAll; + + /// + /// Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + /// + [Obsolete(@"Please use `tags` instead.")] + public InputMap TagsAll + { + get => _tagsAll ?? (_tagsAll = new InputMap()); + set => _tagsAll = value; + } + + [Input("timeouts")] + public Input? Timeouts { get; set; } + + /// + /// Enables use of a user role requirement in your chat configuration. + /// + [Input("userAuthorizationRequired")] + public Input? UserAuthorizationRequired { get; set; } + + public SlackChannelConfigurationState() + { + } + public static new SlackChannelConfigurationState Empty => new SlackChannelConfigurationState(); + } +} diff --git a/sdk/dotnet/Chatbot/TeamsChannelConfiguration.cs b/sdk/dotnet/Chatbot/TeamsChannelConfiguration.cs new file mode 100644 index 00000000000..f5f0ea619f5 --- /dev/null +++ b/sdk/dotnet/Chatbot/TeamsChannelConfiguration.cs @@ -0,0 +1,413 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Chatbot +{ + /// + /// Resource for managing an AWS Chatbot Microsoft Teams Channel Configuration. + /// + /// > **NOTE:** We provide this resource on a best-effort basis. If you are able to test it and find it useful, we welcome your input at GitHub. + /// + /// ## Example Usage + /// + /// ### Basic Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var test = new Aws.Chatbot.TeamsChannelConfiguration("test", new() + /// { + /// ChannelId = "C07EZ1ABC23", + /// ConfigurationName = "mitt-lags-kanal", + /// IamRoleArn = testAwsIamRole.Arn, + /// TeamId = "74361522-da01-538d-aa2e-ac7918c6bb92", + /// TenantId = "1234", + /// Tags = + /// { + /// { "Name", "mitt-lags-kanal" }, + /// }, + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// Using `pulumi import`, import Chatbot Microsoft Teams Channel Configuration using the `team_id`. For example: + /// + /// ```sh + /// $ pulumi import aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration example 5f4f15d2-b958-522a-8333-124aa8bf0925 + /// ``` + /// + [AwsResourceType("aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration")] + public partial class TeamsChannelConfiguration : global::Pulumi.CustomResource + { + /// + /// ID of the Microsoft Teams channel. + /// + [Output("channelId")] + public Output ChannelId { get; private set; } = null!; + + /// + /// Name of the Microsoft Teams channel. + /// + [Output("channelName")] + public Output ChannelName { get; private set; } = null!; + + /// + /// ARN of the Microsoft Teams channel configuration. + /// + [Output("chatConfigurationArn")] + public Output ChatConfigurationArn { get; private set; } = null!; + + /// + /// Name of the Microsoft Teams channel configuration. + /// + [Output("configurationName")] + public Output ConfigurationName { get; private set; } = null!; + + /// + /// List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + /// + [Output("guardrailPolicyArns")] + public Output> GuardrailPolicyArns { get; private set; } = null!; + + /// + /// ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + /// + [Output("iamRoleArn")] + public Output IamRoleArn { get; private set; } = null!; + + /// + /// Logging levels include `ERROR`, `INFO`, or `NONE`. + /// + [Output("loggingLevel")] + public Output LoggingLevel { get; private set; } = null!; + + /// + /// ARNs of the SNS topics that deliver notifications to AWS Chatbot. + /// + [Output("snsTopicArns")] + public Output> SnsTopicArns { get; private set; } = null!; + + /// + /// Map of tags assigned to the resource. + /// + [Output("tags")] + public Output?> Tags { get; private set; } = null!; + + /// + /// Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + /// + [Output("tagsAll")] + public Output> TagsAll { get; private set; } = null!; + + /// + /// ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + /// + [Output("teamId")] + public Output TeamId { get; private set; } = null!; + + /// + /// Name of the Microsoft Teams team. + /// + [Output("teamName")] + public Output TeamName { get; private set; } = null!; + + /// + /// ID of the Microsoft Teams tenant. + /// + /// The following arguments are optional: + /// + [Output("tenantId")] + public Output TenantId { get; private set; } = null!; + + [Output("timeouts")] + public Output Timeouts { get; private set; } = null!; + + /// + /// Enables use of a user role requirement in your chat configuration. + /// + [Output("userAuthorizationRequired")] + public Output UserAuthorizationRequired { get; private set; } = null!; + + + /// + /// Create a TeamsChannelConfiguration resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public TeamsChannelConfiguration(string name, TeamsChannelConfigurationArgs args, CustomResourceOptions? options = null) + : base("aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration", name, args ?? new TeamsChannelConfigurationArgs(), MakeResourceOptions(options, "")) + { + } + + private TeamsChannelConfiguration(string name, Input id, TeamsChannelConfigurationState? state = null, CustomResourceOptions? options = null) + : base("aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing TeamsChannelConfiguration resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static TeamsChannelConfiguration Get(string name, Input id, TeamsChannelConfigurationState? state = null, CustomResourceOptions? options = null) + { + return new TeamsChannelConfiguration(name, id, state, options); + } + } + + public sealed class TeamsChannelConfigurationArgs : global::Pulumi.ResourceArgs + { + /// + /// ID of the Microsoft Teams channel. + /// + [Input("channelId", required: true)] + public Input ChannelId { get; set; } = null!; + + /// + /// Name of the Microsoft Teams channel. + /// + [Input("channelName")] + public Input? ChannelName { get; set; } + + /// + /// Name of the Microsoft Teams channel configuration. + /// + [Input("configurationName", required: true)] + public Input ConfigurationName { get; set; } = null!; + + [Input("guardrailPolicyArns")] + private InputList? _guardrailPolicyArns; + + /// + /// List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + /// + public InputList GuardrailPolicyArns + { + get => _guardrailPolicyArns ?? (_guardrailPolicyArns = new InputList()); + set => _guardrailPolicyArns = value; + } + + /// + /// ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + /// + [Input("iamRoleArn", required: true)] + public Input IamRoleArn { get; set; } = null!; + + /// + /// Logging levels include `ERROR`, `INFO`, or `NONE`. + /// + [Input("loggingLevel")] + public Input? LoggingLevel { get; set; } + + [Input("snsTopicArns")] + private InputList? _snsTopicArns; + + /// + /// ARNs of the SNS topics that deliver notifications to AWS Chatbot. + /// + public InputList SnsTopicArns + { + get => _snsTopicArns ?? (_snsTopicArns = new InputList()); + set => _snsTopicArns = value; + } + + [Input("tags")] + private InputMap? _tags; + + /// + /// Map of tags assigned to the resource. + /// + public InputMap Tags + { + get => _tags ?? (_tags = new InputMap()); + set => _tags = value; + } + + /// + /// ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + /// + [Input("teamId", required: true)] + public Input TeamId { get; set; } = null!; + + /// + /// Name of the Microsoft Teams team. + /// + [Input("teamName")] + public Input? TeamName { get; set; } + + /// + /// ID of the Microsoft Teams tenant. + /// + /// The following arguments are optional: + /// + [Input("tenantId", required: true)] + public Input TenantId { get; set; } = null!; + + [Input("timeouts")] + public Input? Timeouts { get; set; } + + /// + /// Enables use of a user role requirement in your chat configuration. + /// + [Input("userAuthorizationRequired")] + public Input? UserAuthorizationRequired { get; set; } + + public TeamsChannelConfigurationArgs() + { + } + public static new TeamsChannelConfigurationArgs Empty => new TeamsChannelConfigurationArgs(); + } + + public sealed class TeamsChannelConfigurationState : global::Pulumi.ResourceArgs + { + /// + /// ID of the Microsoft Teams channel. + /// + [Input("channelId")] + public Input? ChannelId { get; set; } + + /// + /// Name of the Microsoft Teams channel. + /// + [Input("channelName")] + public Input? ChannelName { get; set; } + + /// + /// ARN of the Microsoft Teams channel configuration. + /// + [Input("chatConfigurationArn")] + public Input? ChatConfigurationArn { get; set; } + + /// + /// Name of the Microsoft Teams channel configuration. + /// + [Input("configurationName")] + public Input? ConfigurationName { get; set; } + + [Input("guardrailPolicyArns")] + private InputList? _guardrailPolicyArns; + + /// + /// List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + /// + public InputList GuardrailPolicyArns + { + get => _guardrailPolicyArns ?? (_guardrailPolicyArns = new InputList()); + set => _guardrailPolicyArns = value; + } + + /// + /// ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + /// + [Input("iamRoleArn")] + public Input? IamRoleArn { get; set; } + + /// + /// Logging levels include `ERROR`, `INFO`, or `NONE`. + /// + [Input("loggingLevel")] + public Input? LoggingLevel { get; set; } + + [Input("snsTopicArns")] + private InputList? _snsTopicArns; + + /// + /// ARNs of the SNS topics that deliver notifications to AWS Chatbot. + /// + public InputList SnsTopicArns + { + get => _snsTopicArns ?? (_snsTopicArns = new InputList()); + set => _snsTopicArns = value; + } + + [Input("tags")] + private InputMap? _tags; + + /// + /// Map of tags assigned to the resource. + /// + public InputMap Tags + { + get => _tags ?? (_tags = new InputMap()); + set => _tags = value; + } + + [Input("tagsAll")] + private InputMap? _tagsAll; + + /// + /// Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + /// + [Obsolete(@"Please use `tags` instead.")] + public InputMap TagsAll + { + get => _tagsAll ?? (_tagsAll = new InputMap()); + set => _tagsAll = value; + } + + /// + /// ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + /// + [Input("teamId")] + public Input? TeamId { get; set; } + + /// + /// Name of the Microsoft Teams team. + /// + [Input("teamName")] + public Input? TeamName { get; set; } + + /// + /// ID of the Microsoft Teams tenant. + /// + /// The following arguments are optional: + /// + [Input("tenantId")] + public Input? TenantId { get; set; } + + [Input("timeouts")] + public Input? Timeouts { get; set; } + + /// + /// Enables use of a user role requirement in your chat configuration. + /// + [Input("userAuthorizationRequired")] + public Input? UserAuthorizationRequired { get; set; } + + public TeamsChannelConfigurationState() + { + } + public static new TeamsChannelConfigurationState Empty => new TeamsChannelConfigurationState(); + } +} diff --git a/sdk/dotnet/CloudSearch/Inputs/DomainIndexFieldArgs.cs b/sdk/dotnet/CloudSearch/Inputs/DomainIndexFieldArgs.cs index 074fd0a7460..9d8e62d0ffd 100644 --- a/sdk/dotnet/CloudSearch/Inputs/DomainIndexFieldArgs.cs +++ b/sdk/dotnet/CloudSearch/Inputs/DomainIndexFieldArgs.cs @@ -37,7 +37,7 @@ public sealed class DomainIndexFieldArgs : global::Pulumi.ResourceArgs public Input? Highlight { get; set; } /// - /// A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + /// A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. /// [Input("name", required: true)] public Input Name { get; set; } = null!; diff --git a/sdk/dotnet/CloudSearch/Inputs/DomainIndexFieldGetArgs.cs b/sdk/dotnet/CloudSearch/Inputs/DomainIndexFieldGetArgs.cs index fb1e3d8d43e..e711c828d6d 100644 --- a/sdk/dotnet/CloudSearch/Inputs/DomainIndexFieldGetArgs.cs +++ b/sdk/dotnet/CloudSearch/Inputs/DomainIndexFieldGetArgs.cs @@ -37,7 +37,7 @@ public sealed class DomainIndexFieldGetArgs : global::Pulumi.ResourceArgs public Input? Highlight { get; set; } /// - /// A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + /// A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. /// [Input("name", required: true)] public Input Name { get; set; } = null!; diff --git a/sdk/dotnet/CloudSearch/Outputs/DomainIndexField.cs b/sdk/dotnet/CloudSearch/Outputs/DomainIndexField.cs index cfc6334ff3a..fdc6d151d1d 100644 --- a/sdk/dotnet/CloudSearch/Outputs/DomainIndexField.cs +++ b/sdk/dotnet/CloudSearch/Outputs/DomainIndexField.cs @@ -30,7 +30,7 @@ public sealed class DomainIndexField /// public readonly bool? Highlight; /// - /// A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + /// A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. /// public readonly string Name; /// diff --git a/sdk/dotnet/Config/Config.cs b/sdk/dotnet/Config/Config.cs index 448a55f6723..d5646978bea 100644 --- a/sdk/dotnet/Config/Config.cs +++ b/sdk/dotnet/Config/Config.cs @@ -1333,6 +1333,10 @@ public class Endpoints public string? Rekognition { get; set; } = null!; /// /// Use this to override the default service endpoint URL + /// + public string? Resiliencehub { get; set; } = null!; + /// + /// Use this to override the default service endpoint URL /// public string? Resourceexplorer2 { get; set; } = null!; /// diff --git a/sdk/dotnet/DataZone/Glossary.cs b/sdk/dotnet/DataZone/Glossary.cs new file mode 100644 index 00000000000..f6c2499d85a --- /dev/null +++ b/sdk/dotnet/DataZone/Glossary.cs @@ -0,0 +1,304 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.DataZone +{ + /// + /// Resource for managing an AWS DataZone Glossary. + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using System.Text.Json; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var domainExecutionRole = new Aws.Iam.Role("domain_execution_role", new() + /// { + /// Name = "example_name", + /// AssumeRolePolicy = JsonSerializer.Serialize(new Dictionary<string, object?> + /// { + /// ["Version"] = "2012-10-17", + /// ["Statement"] = new[] + /// { + /// new Dictionary<string, object?> + /// { + /// ["Action"] = new[] + /// { + /// "sts:AssumeRole", + /// "sts:TagSession", + /// }, + /// ["Effect"] = "Allow", + /// ["Principal"] = new Dictionary<string, object?> + /// { + /// ["Service"] = "datazone.amazonaws.com", + /// }, + /// }, + /// new Dictionary<string, object?> + /// { + /// ["Action"] = new[] + /// { + /// "sts:AssumeRole", + /// "sts:TagSession", + /// }, + /// ["Effect"] = "Allow", + /// ["Principal"] = new Dictionary<string, object?> + /// { + /// ["Service"] = "cloudformation.amazonaws.com", + /// }, + /// }, + /// }, + /// }), + /// InlinePolicies = new[] + /// { + /// new Aws.Iam.Inputs.RoleInlinePolicyArgs + /// { + /// Name = "example_name", + /// Policy = JsonSerializer.Serialize(new Dictionary<string, object?> + /// { + /// ["Version"] = "2012-10-17", + /// ["Statement"] = new[] + /// { + /// new Dictionary<string, object?> + /// { + /// ["Action"] = new[] + /// { + /// "datazone:*", + /// "ram:*", + /// "sso:*", + /// "kms:*", + /// }, + /// ["Effect"] = "Allow", + /// ["Resource"] = "*", + /// }, + /// }, + /// }), + /// }, + /// }, + /// }); + /// + /// var test = new Aws.DataZone.Domain("test", new() + /// { + /// Name = "example_name", + /// DomainExecutionRole = domainExecutionRole.Arn, + /// }); + /// + /// var testSecurityGroup = new Aws.Ec2.SecurityGroup("test", new() + /// { + /// Name = "example_name", + /// }); + /// + /// var testProject = new Aws.DataZone.Project("test", new() + /// { + /// DomainIdentifier = test.Id, + /// GlossaryTerms = new[] + /// { + /// "2N8w6XJCwZf", + /// }, + /// Name = "example_name", + /// Description = "desc", + /// SkipDeletionCheck = true, + /// }); + /// + /// var testGlossary = new Aws.DataZone.Glossary("test", new() + /// { + /// Description = "description", + /// Name = "example_name", + /// OwningProjectIdentifier = testProject.Id, + /// Status = "DISABLED", + /// DomainIdentifier = testProject.DomainIdentifier, + /// }); + /// + /// }); + /// ``` + /// + /// ### Basic Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var test = new Aws.DataZone.Glossary("test", new() + /// { + /// Description = "description", + /// Name = "example_name", + /// OwningProjectIdentifier = testAwsDatazoneProject.Id, + /// Status = "DISABLED", + /// DomainIdentifier = testAwsDatazoneProject.DomainIdentifier, + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// Using `pulumi import`, import DataZone Glossary using the import Datazone Glossary using a comma-delimited string combining the domain id, glossary id, and the id of the project it's under. For example: + /// + /// ```sh + /// $ pulumi import aws:datazone/glossary:Glossary example domain-id,glossary-id,owning-project-identifier + /// ``` + /// + [AwsResourceType("aws:datazone/glossary:Glossary")] + public partial class Glossary : global::Pulumi.CustomResource + { + /// + /// Description of the glossary. Must have a length between 0 and 4096. + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + [Output("domainIdentifier")] + public Output DomainIdentifier { get; private set; } = null!; + + /// + /// Name of the glossary. Must have length between 1 and 256. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + /// + /// The following arguments are optional: + /// + [Output("owningProjectIdentifier")] + public Output OwningProjectIdentifier { get; private set; } = null!; + + /// + /// Status of business glossary. Valid values are DISABLED and ENABLED. + /// + [Output("status")] + public Output Status { get; private set; } = null!; + + + /// + /// Create a Glossary resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public Glossary(string name, GlossaryArgs args, CustomResourceOptions? options = null) + : base("aws:datazone/glossary:Glossary", name, args ?? new GlossaryArgs(), MakeResourceOptions(options, "")) + { + } + + private Glossary(string name, Input id, GlossaryState? state = null, CustomResourceOptions? options = null) + : base("aws:datazone/glossary:Glossary", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing Glossary resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static Glossary Get(string name, Input id, GlossaryState? state = null, CustomResourceOptions? options = null) + { + return new Glossary(name, id, state, options); + } + } + + public sealed class GlossaryArgs : global::Pulumi.ResourceArgs + { + /// + /// Description of the glossary. Must have a length between 0 and 4096. + /// + [Input("description")] + public Input? Description { get; set; } + + [Input("domainIdentifier", required: true)] + public Input DomainIdentifier { get; set; } = null!; + + /// + /// Name of the glossary. Must have length between 1 and 256. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + /// + /// The following arguments are optional: + /// + [Input("owningProjectIdentifier", required: true)] + public Input OwningProjectIdentifier { get; set; } = null!; + + /// + /// Status of business glossary. Valid values are DISABLED and ENABLED. + /// + [Input("status")] + public Input? Status { get; set; } + + public GlossaryArgs() + { + } + public static new GlossaryArgs Empty => new GlossaryArgs(); + } + + public sealed class GlossaryState : global::Pulumi.ResourceArgs + { + /// + /// Description of the glossary. Must have a length between 0 and 4096. + /// + [Input("description")] + public Input? Description { get; set; } + + [Input("domainIdentifier")] + public Input? DomainIdentifier { get; set; } + + /// + /// Name of the glossary. Must have length between 1 and 256. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + /// + /// The following arguments are optional: + /// + [Input("owningProjectIdentifier")] + public Input? OwningProjectIdentifier { get; set; } + + /// + /// Status of business glossary. Valid values are DISABLED and ENABLED. + /// + [Input("status")] + public Input? Status { get; set; } + + public GlossaryState() + { + } + public static new GlossaryState Empty => new GlossaryState(); + } +} diff --git a/sdk/dotnet/Ec2/Inputs/InstanceInstanceMarketOptionsArgs.cs b/sdk/dotnet/Ec2/Inputs/InstanceInstanceMarketOptionsArgs.cs index 74ba5065267..f0f1f0d3b61 100644 --- a/sdk/dotnet/Ec2/Inputs/InstanceInstanceMarketOptionsArgs.cs +++ b/sdk/dotnet/Ec2/Inputs/InstanceInstanceMarketOptionsArgs.cs @@ -13,7 +13,7 @@ namespace Pulumi.Aws.Ec2.Inputs public sealed class InstanceInstanceMarketOptionsArgs : global::Pulumi.ResourceArgs { /// - /// Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + /// Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. /// [Input("marketType")] public Input? MarketType { get; set; } diff --git a/sdk/dotnet/Ec2/Inputs/InstanceInstanceMarketOptionsGetArgs.cs b/sdk/dotnet/Ec2/Inputs/InstanceInstanceMarketOptionsGetArgs.cs index 5c246bf1dc0..83f4106b7e6 100644 --- a/sdk/dotnet/Ec2/Inputs/InstanceInstanceMarketOptionsGetArgs.cs +++ b/sdk/dotnet/Ec2/Inputs/InstanceInstanceMarketOptionsGetArgs.cs @@ -13,7 +13,7 @@ namespace Pulumi.Aws.Ec2.Inputs public sealed class InstanceInstanceMarketOptionsGetArgs : global::Pulumi.ResourceArgs { /// - /// Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + /// Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. /// [Input("marketType")] public Input? MarketType { get; set; } diff --git a/sdk/dotnet/Ec2/Outputs/InstanceInstanceMarketOptions.cs b/sdk/dotnet/Ec2/Outputs/InstanceInstanceMarketOptions.cs index 01339dc03e9..e6c8099cc3c 100644 --- a/sdk/dotnet/Ec2/Outputs/InstanceInstanceMarketOptions.cs +++ b/sdk/dotnet/Ec2/Outputs/InstanceInstanceMarketOptions.cs @@ -14,7 +14,7 @@ namespace Pulumi.Aws.Ec2.Outputs public sealed class InstanceInstanceMarketOptions { /// - /// Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + /// Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. /// public readonly string? MarketType; /// diff --git a/sdk/dotnet/Ec2/Vpc.cs b/sdk/dotnet/Ec2/Vpc.cs index cca62800dc0..fa1c4e7ad7c 100644 --- a/sdk/dotnet/Ec2/Vpc.cs +++ b/sdk/dotnet/Ec2/Vpc.cs @@ -220,7 +220,7 @@ public partial class Vpc : global::Pulumi.CustomResource public Output Ipv6IpamPoolId { get; private set; } = null!; /// - /// Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + /// Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. /// [Output("ipv6NetmaskLength")] public Output Ipv6NetmaskLength { get; private set; } = null!; @@ -364,7 +364,7 @@ public sealed class VpcArgs : global::Pulumi.ResourceArgs public Input? Ipv6IpamPoolId { get; set; } /// - /// Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + /// Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. /// [Input("ipv6NetmaskLength")] public Input? Ipv6NetmaskLength { get; set; } @@ -492,7 +492,7 @@ public sealed class VpcState : global::Pulumi.ResourceArgs public Input? Ipv6IpamPoolId { get; set; } /// - /// Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + /// Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. /// [Input("ipv6NetmaskLength")] public Input? Ipv6NetmaskLength { get; set; } diff --git a/sdk/dotnet/Ec2/VpcIpamPoolCidrAllocation.cs b/sdk/dotnet/Ec2/VpcIpamPoolCidrAllocation.cs index c12b1290609..c6c845458a2 100644 --- a/sdk/dotnet/Ec2/VpcIpamPoolCidrAllocation.cs +++ b/sdk/dotnet/Ec2/VpcIpamPoolCidrAllocation.cs @@ -162,7 +162,7 @@ public partial class VpcIpamPoolCidrAllocation : global::Pulumi.CustomResource /// The netmask length of the CIDR you would like to allocate to the IPAM pool. Valid Values: `0-128`. /// [Output("netmaskLength")] - public Output NetmaskLength { get; private set; } = null!; + public Output NetmaskLength { get; private set; } = null!; /// /// The ID of the resource. diff --git a/sdk/dotnet/Ec2/VpcIpv6CidrBlockAssociation.cs b/sdk/dotnet/Ec2/VpcIpv6CidrBlockAssociation.cs index 6d894459e21..6bcb3fc32b1 100644 --- a/sdk/dotnet/Ec2/VpcIpv6CidrBlockAssociation.cs +++ b/sdk/dotnet/Ec2/VpcIpv6CidrBlockAssociation.cs @@ -50,23 +50,35 @@ namespace Pulumi.Aws.Ec2 public partial class VpcIpv6CidrBlockAssociation : global::Pulumi.CustomResource { /// - /// The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + /// Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + /// + [Output("assignGeneratedIpv6CidrBlock")] + public Output AssignGeneratedIpv6CidrBlock { get; private set; } = null!; + + /// + /// The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. /// [Output("ipv6CidrBlock")] public Output Ipv6CidrBlock { get; private set; } = null!; /// - /// The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + /// - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. /// [Output("ipv6IpamPoolId")] - public Output Ipv6IpamPoolId { get; private set; } = null!; + public Output Ipv6IpamPoolId { get; private set; } = null!; /// - /// The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + /// The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. /// [Output("ipv6NetmaskLength")] public Output Ipv6NetmaskLength { get; private set; } = null!; + /// + /// The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + /// + [Output("ipv6Pool")] + public Output Ipv6Pool { get; private set; } = null!; + /// /// The ID of the VPC to make the association with. /// @@ -120,23 +132,35 @@ public static VpcIpv6CidrBlockAssociation Get(string name, Input id, Vpc public sealed class VpcIpv6CidrBlockAssociationArgs : global::Pulumi.ResourceArgs { /// - /// The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + /// Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + /// + [Input("assignGeneratedIpv6CidrBlock")] + public Input? AssignGeneratedIpv6CidrBlock { get; set; } + + /// + /// The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. /// [Input("ipv6CidrBlock")] public Input? Ipv6CidrBlock { get; set; } /// - /// The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + /// - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. /// - [Input("ipv6IpamPoolId", required: true)] - public Input Ipv6IpamPoolId { get; set; } = null!; + [Input("ipv6IpamPoolId")] + public Input? Ipv6IpamPoolId { get; set; } /// - /// The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + /// The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. /// [Input("ipv6NetmaskLength")] public Input? Ipv6NetmaskLength { get; set; } + /// + /// The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + /// + [Input("ipv6Pool")] + public Input? Ipv6Pool { get; set; } + /// /// The ID of the VPC to make the association with. /// @@ -152,23 +176,35 @@ public VpcIpv6CidrBlockAssociationArgs() public sealed class VpcIpv6CidrBlockAssociationState : global::Pulumi.ResourceArgs { /// - /// The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + /// Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + /// + [Input("assignGeneratedIpv6CidrBlock")] + public Input? AssignGeneratedIpv6CidrBlock { get; set; } + + /// + /// The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. /// [Input("ipv6CidrBlock")] public Input? Ipv6CidrBlock { get; set; } /// - /// The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + /// - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. /// [Input("ipv6IpamPoolId")] public Input? Ipv6IpamPoolId { get; set; } /// - /// The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + /// The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. /// [Input("ipv6NetmaskLength")] public Input? Ipv6NetmaskLength { get; set; } + /// + /// The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + /// + [Input("ipv6Pool")] + public Input? Ipv6Pool { get; set; } + /// /// The ID of the VPC to make the association with. /// diff --git a/sdk/dotnet/Ecr/GetRepositoryCreationTemplate.cs b/sdk/dotnet/Ecr/GetRepositoryCreationTemplate.cs new file mode 100644 index 00000000000..8b5de96d5e0 --- /dev/null +++ b/sdk/dotnet/Ecr/GetRepositoryCreationTemplate.cs @@ -0,0 +1,199 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Ecr +{ + public static class GetRepositoryCreationTemplate + { + /// + /// The ECR Repository Creation Template data source allows the template details to be retrieved for a Repository Creation Template. + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Ecr.GetRepositoryCreationTemplate.Invoke(new() + /// { + /// Prefix = "example", + /// }); + /// + /// }); + /// ``` + /// + public static Task InvokeAsync(GetRepositoryCreationTemplateArgs args, InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.InvokeAsync("aws:ecr/getRepositoryCreationTemplate:getRepositoryCreationTemplate", args ?? new GetRepositoryCreationTemplateArgs(), options.WithDefaults()); + + /// + /// The ECR Repository Creation Template data source allows the template details to be retrieved for a Repository Creation Template. + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Ecr.GetRepositoryCreationTemplate.Invoke(new() + /// { + /// Prefix = "example", + /// }); + /// + /// }); + /// ``` + /// + public static Output Invoke(GetRepositoryCreationTemplateInvokeArgs args, InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.Invoke("aws:ecr/getRepositoryCreationTemplate:getRepositoryCreationTemplate", args ?? new GetRepositoryCreationTemplateInvokeArgs(), options.WithDefaults()); + } + + + public sealed class GetRepositoryCreationTemplateArgs : global::Pulumi.InvokeArgs + { + /// + /// The repository name prefix that the template matches against. + /// + [Input("prefix", required: true)] + public string Prefix { get; set; } = null!; + + [Input("resourceTags")] + private Dictionary? _resourceTags; + + /// + /// A map of tags to assign to any created repositories. + /// + public Dictionary ResourceTags + { + get => _resourceTags ?? (_resourceTags = new Dictionary()); + set => _resourceTags = value; + } + + public GetRepositoryCreationTemplateArgs() + { + } + public static new GetRepositoryCreationTemplateArgs Empty => new GetRepositoryCreationTemplateArgs(); + } + + public sealed class GetRepositoryCreationTemplateInvokeArgs : global::Pulumi.InvokeArgs + { + /// + /// The repository name prefix that the template matches against. + /// + [Input("prefix", required: true)] + public Input Prefix { get; set; } = null!; + + [Input("resourceTags")] + private InputMap? _resourceTags; + + /// + /// A map of tags to assign to any created repositories. + /// + public InputMap ResourceTags + { + get => _resourceTags ?? (_resourceTags = new InputMap()); + set => _resourceTags = value; + } + + public GetRepositoryCreationTemplateInvokeArgs() + { + } + public static new GetRepositoryCreationTemplateInvokeArgs Empty => new GetRepositoryCreationTemplateInvokeArgs(); + } + + + [OutputType] + public sealed class GetRepositoryCreationTemplateResult + { + /// + /// Which features this template applies to. Contains one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + /// + public readonly ImmutableArray AppliedFors; + /// + /// The ARN of the custom role used for repository creation. + /// + public readonly string CustomRoleArn; + /// + /// The description for this template. + /// + public readonly string Description; + /// + /// Encryption configuration for any created repositories. See Encryption Configuration below. + /// + public readonly ImmutableArray EncryptionConfigurations; + /// + /// The provider-assigned unique ID for this managed resource. + /// + public readonly string Id; + /// + /// The tag mutability setting for any created repositories. + /// + public readonly string ImageTagMutability; + /// + /// The lifecycle policy document to apply to any created repositories. + /// + public readonly string LifecyclePolicy; + public readonly string Prefix; + /// + /// The registry ID the repository creation template applies to. + /// + public readonly string RegistryId; + /// + /// The registry policy document to apply to any created repositories. + /// + public readonly string RepositoryPolicy; + /// + /// A map of tags to assign to any created repositories. + /// + public readonly ImmutableDictionary ResourceTags; + + [OutputConstructor] + private GetRepositoryCreationTemplateResult( + ImmutableArray appliedFors, + + string customRoleArn, + + string description, + + ImmutableArray encryptionConfigurations, + + string id, + + string imageTagMutability, + + string lifecyclePolicy, + + string prefix, + + string registryId, + + string repositoryPolicy, + + ImmutableDictionary resourceTags) + { + AppliedFors = appliedFors; + CustomRoleArn = customRoleArn; + Description = description; + EncryptionConfigurations = encryptionConfigurations; + Id = id; + ImageTagMutability = imageTagMutability; + LifecyclePolicy = lifecyclePolicy; + Prefix = prefix; + RegistryId = registryId; + RepositoryPolicy = repositoryPolicy; + ResourceTags = resourceTags; + } + } +} diff --git a/sdk/dotnet/Ecr/Inputs/RepositoryCreationTemplateEncryptionConfigurationArgs.cs b/sdk/dotnet/Ecr/Inputs/RepositoryCreationTemplateEncryptionConfigurationArgs.cs new file mode 100644 index 00000000000..6e5e496de67 --- /dev/null +++ b/sdk/dotnet/Ecr/Inputs/RepositoryCreationTemplateEncryptionConfigurationArgs.cs @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Ecr.Inputs +{ + + public sealed class RepositoryCreationTemplateEncryptionConfigurationArgs : global::Pulumi.ResourceArgs + { + /// + /// The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + /// + [Input("encryptionType")] + public Input? EncryptionType { get; set; } + + /// + /// The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + /// + [Input("kmsKey")] + public Input? KmsKey { get; set; } + + public RepositoryCreationTemplateEncryptionConfigurationArgs() + { + } + public static new RepositoryCreationTemplateEncryptionConfigurationArgs Empty => new RepositoryCreationTemplateEncryptionConfigurationArgs(); + } +} diff --git a/sdk/dotnet/Ecr/Inputs/RepositoryCreationTemplateEncryptionConfigurationGetArgs.cs b/sdk/dotnet/Ecr/Inputs/RepositoryCreationTemplateEncryptionConfigurationGetArgs.cs new file mode 100644 index 00000000000..d75d52bdda2 --- /dev/null +++ b/sdk/dotnet/Ecr/Inputs/RepositoryCreationTemplateEncryptionConfigurationGetArgs.cs @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Ecr.Inputs +{ + + public sealed class RepositoryCreationTemplateEncryptionConfigurationGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + /// + [Input("encryptionType")] + public Input? EncryptionType { get; set; } + + /// + /// The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + /// + [Input("kmsKey")] + public Input? KmsKey { get; set; } + + public RepositoryCreationTemplateEncryptionConfigurationGetArgs() + { + } + public static new RepositoryCreationTemplateEncryptionConfigurationGetArgs Empty => new RepositoryCreationTemplateEncryptionConfigurationGetArgs(); + } +} diff --git a/sdk/dotnet/Ecr/Outputs/GetRepositoryCreationTemplateEncryptionConfigurationResult.cs b/sdk/dotnet/Ecr/Outputs/GetRepositoryCreationTemplateEncryptionConfigurationResult.cs new file mode 100644 index 00000000000..68600bb415c --- /dev/null +++ b/sdk/dotnet/Ecr/Outputs/GetRepositoryCreationTemplateEncryptionConfigurationResult.cs @@ -0,0 +1,35 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Ecr.Outputs +{ + + [OutputType] + public sealed class GetRepositoryCreationTemplateEncryptionConfigurationResult + { + /// + /// Encryption type to use for any created repositories, either `AES256` or `KMS`. + /// + public readonly string EncryptionType; + /// + /// If `encryption_type` is `KMS`, the ARN of the KMS key used. + /// + public readonly string KmsKey; + + [OutputConstructor] + private GetRepositoryCreationTemplateEncryptionConfigurationResult( + string encryptionType, + + string kmsKey) + { + EncryptionType = encryptionType; + KmsKey = kmsKey; + } + } +} diff --git a/sdk/dotnet/Ecr/Outputs/RepositoryCreationTemplateEncryptionConfiguration.cs b/sdk/dotnet/Ecr/Outputs/RepositoryCreationTemplateEncryptionConfiguration.cs new file mode 100644 index 00000000000..51a074ec90f --- /dev/null +++ b/sdk/dotnet/Ecr/Outputs/RepositoryCreationTemplateEncryptionConfiguration.cs @@ -0,0 +1,35 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Ecr.Outputs +{ + + [OutputType] + public sealed class RepositoryCreationTemplateEncryptionConfiguration + { + /// + /// The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + /// + public readonly string? EncryptionType; + /// + /// The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + /// + public readonly string? KmsKey; + + [OutputConstructor] + private RepositoryCreationTemplateEncryptionConfiguration( + string? encryptionType, + + string? kmsKey) + { + EncryptionType = encryptionType; + KmsKey = kmsKey; + } + } +} diff --git a/sdk/dotnet/Ecr/RepositoryCreationTemplate.cs b/sdk/dotnet/Ecr/RepositoryCreationTemplate.cs new file mode 100644 index 00000000000..d60b27ba722 --- /dev/null +++ b/sdk/dotnet/Ecr/RepositoryCreationTemplate.cs @@ -0,0 +1,381 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Ecr +{ + /// + /// Provides an Elastic Container Registry Repository Creation Template. + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = Aws.Iam.GetPolicyDocument.Invoke(new() + /// { + /// Statements = new[] + /// { + /// new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs + /// { + /// Sid = "new policy", + /// Effect = "Allow", + /// Principals = new[] + /// { + /// new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs + /// { + /// Type = "AWS", + /// Identifiers = new[] + /// { + /// "123456789012", + /// }, + /// }, + /// }, + /// Actions = new[] + /// { + /// "ecr:GetDownloadUrlForLayer", + /// "ecr:BatchGetImage", + /// "ecr:BatchCheckLayerAvailability", + /// "ecr:PutImage", + /// "ecr:InitiateLayerUpload", + /// "ecr:UploadLayerPart", + /// "ecr:CompleteLayerUpload", + /// "ecr:DescribeRepositories", + /// "ecr:GetRepositoryPolicy", + /// "ecr:ListImages", + /// "ecr:DeleteRepository", + /// "ecr:BatchDeleteImage", + /// "ecr:SetRepositoryPolicy", + /// "ecr:DeleteRepositoryPolicy", + /// }, + /// }, + /// }, + /// }); + /// + /// var exampleRepositoryCreationTemplate = new Aws.Ecr.RepositoryCreationTemplate("example", new() + /// { + /// Prefix = "example", + /// Description = "An example template", + /// ImageTagMutability = "IMMUTABLE", + /// CustomRoleArn = "arn:aws:iam::123456789012:role/example", + /// AppliedFors = new[] + /// { + /// "PULL_THROUGH_CACHE", + /// }, + /// EncryptionConfigurations = new[] + /// { + /// new Aws.Ecr.Inputs.RepositoryCreationTemplateEncryptionConfigurationArgs + /// { + /// EncryptionType = "AES256", + /// }, + /// }, + /// RepositoryPolicy = example.Apply(getPolicyDocumentResult => getPolicyDocumentResult.Json), + /// LifecyclePolicy = @"{ + /// ""rules"": [ + /// { + /// ""rulePriority"": 1, + /// ""description"": ""Expire images older than 14 days"", + /// ""selection"": { + /// ""tagStatus"": ""untagged"", + /// ""countType"": ""sinceImagePushed"", + /// ""countUnit"": ""days"", + /// ""countNumber"": 14 + /// }, + /// ""action"": { + /// ""type"": ""expire"" + /// } + /// } + /// ] + /// } + /// ", + /// ResourceTags = + /// { + /// { "Foo", "Bar" }, + /// }, + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// Using `pulumi import`, import the ECR Repository Creating Templates using the `prefix`. For example: + /// + /// ```sh + /// $ pulumi import aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate example example + /// ``` + /// + [AwsResourceType("aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate")] + public partial class RepositoryCreationTemplate : global::Pulumi.CustomResource + { + /// + /// Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + /// + [Output("appliedFors")] + public Output> AppliedFors { get; private set; } = null!; + + /// + /// A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + /// + [Output("customRoleArn")] + public Output CustomRoleArn { get; private set; } = null!; + + /// + /// The description for this template. + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + /// + /// Encryption configuration for any created repositories. See below for schema. + /// + [Output("encryptionConfigurations")] + public Output> EncryptionConfigurations { get; private set; } = null!; + + /// + /// The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + /// + [Output("imageTagMutability")] + public Output ImageTagMutability { get; private set; } = null!; + + /// + /// The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + /// + [Output("lifecyclePolicy")] + public Output LifecyclePolicy { get; private set; } = null!; + + /// + /// The repository name prefix to match against. + /// + [Output("prefix")] + public Output Prefix { get; private set; } = null!; + + /// + /// The registry ID the repository creation template applies to. + /// + [Output("registryId")] + public Output RegistryId { get; private set; } = null!; + + [Output("repositoryPolicy")] + public Output RepositoryPolicy { get; private set; } = null!; + + /// + /// A map of tags to assign to any created repositories. + /// + [Output("resourceTags")] + public Output?> ResourceTags { get; private set; } = null!; + + + /// + /// Create a RepositoryCreationTemplate resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public RepositoryCreationTemplate(string name, RepositoryCreationTemplateArgs args, CustomResourceOptions? options = null) + : base("aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate", name, args ?? new RepositoryCreationTemplateArgs(), MakeResourceOptions(options, "")) + { + } + + private RepositoryCreationTemplate(string name, Input id, RepositoryCreationTemplateState? state = null, CustomResourceOptions? options = null) + : base("aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing RepositoryCreationTemplate resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static RepositoryCreationTemplate Get(string name, Input id, RepositoryCreationTemplateState? state = null, CustomResourceOptions? options = null) + { + return new RepositoryCreationTemplate(name, id, state, options); + } + } + + public sealed class RepositoryCreationTemplateArgs : global::Pulumi.ResourceArgs + { + [Input("appliedFors", required: true)] + private InputList? _appliedFors; + + /// + /// Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + /// + public InputList AppliedFors + { + get => _appliedFors ?? (_appliedFors = new InputList()); + set => _appliedFors = value; + } + + /// + /// A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + /// + [Input("customRoleArn")] + public Input? CustomRoleArn { get; set; } + + /// + /// The description for this template. + /// + [Input("description")] + public Input? Description { get; set; } + + [Input("encryptionConfigurations")] + private InputList? _encryptionConfigurations; + + /// + /// Encryption configuration for any created repositories. See below for schema. + /// + public InputList EncryptionConfigurations + { + get => _encryptionConfigurations ?? (_encryptionConfigurations = new InputList()); + set => _encryptionConfigurations = value; + } + + /// + /// The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + /// + [Input("imageTagMutability")] + public Input? ImageTagMutability { get; set; } + + /// + /// The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + /// + [Input("lifecyclePolicy")] + public Input? LifecyclePolicy { get; set; } + + /// + /// The repository name prefix to match against. + /// + [Input("prefix", required: true)] + public Input Prefix { get; set; } = null!; + + [Input("repositoryPolicy")] + public Input? RepositoryPolicy { get; set; } + + [Input("resourceTags")] + private InputMap? _resourceTags; + + /// + /// A map of tags to assign to any created repositories. + /// + public InputMap ResourceTags + { + get => _resourceTags ?? (_resourceTags = new InputMap()); + set => _resourceTags = value; + } + + public RepositoryCreationTemplateArgs() + { + } + public static new RepositoryCreationTemplateArgs Empty => new RepositoryCreationTemplateArgs(); + } + + public sealed class RepositoryCreationTemplateState : global::Pulumi.ResourceArgs + { + [Input("appliedFors")] + private InputList? _appliedFors; + + /// + /// Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + /// + public InputList AppliedFors + { + get => _appliedFors ?? (_appliedFors = new InputList()); + set => _appliedFors = value; + } + + /// + /// A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + /// + [Input("customRoleArn")] + public Input? CustomRoleArn { get; set; } + + /// + /// The description for this template. + /// + [Input("description")] + public Input? Description { get; set; } + + [Input("encryptionConfigurations")] + private InputList? _encryptionConfigurations; + + /// + /// Encryption configuration for any created repositories. See below for schema. + /// + public InputList EncryptionConfigurations + { + get => _encryptionConfigurations ?? (_encryptionConfigurations = new InputList()); + set => _encryptionConfigurations = value; + } + + /// + /// The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + /// + [Input("imageTagMutability")] + public Input? ImageTagMutability { get; set; } + + /// + /// The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + /// + [Input("lifecyclePolicy")] + public Input? LifecyclePolicy { get; set; } + + /// + /// The repository name prefix to match against. + /// + [Input("prefix")] + public Input? Prefix { get; set; } + + /// + /// The registry ID the repository creation template applies to. + /// + [Input("registryId")] + public Input? RegistryId { get; set; } + + [Input("repositoryPolicy")] + public Input? RepositoryPolicy { get; set; } + + [Input("resourceTags")] + private InputMap? _resourceTags; + + /// + /// A map of tags to assign to any created repositories. + /// + public InputMap ResourceTags + { + get => _resourceTags ?? (_resourceTags = new InputMap()); + set => _resourceTags = value; + } + + public RepositoryCreationTemplateState() + { + } + public static new RepositoryCreationTemplateState Empty => new RepositoryCreationTemplateState(); + } +} diff --git a/sdk/dotnet/Eks/Cluster.cs b/sdk/dotnet/Eks/Cluster.cs index 285701aa5dc..1bc4b9d7051 100644 --- a/sdk/dotnet/Eks/Cluster.cs +++ b/sdk/dotnet/Eks/Cluster.cs @@ -441,6 +441,12 @@ public partial class Cluster : global::Pulumi.CustomResource [Output("tagsAll")] public Output> TagsAll { get; private set; } = null!; + /// + /// Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + /// + [Output("upgradePolicy")] + public Output UpgradePolicy { get; private set; } = null!; + /// /// Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. /// @@ -575,6 +581,12 @@ public InputMap Tags set => _tags = value; } + /// + /// Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + /// + [Input("upgradePolicy")] + public Input? UpgradePolicy { get; set; } + /// /// Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. /// @@ -746,6 +758,12 @@ public InputMap TagsAll set => _tagsAll = value; } + /// + /// Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + /// + [Input("upgradePolicy")] + public Input? UpgradePolicy { get; set; } + /// /// Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. /// diff --git a/sdk/dotnet/Eks/GetCluster.cs b/sdk/dotnet/Eks/GetCluster.cs index 7dee1032a7f..180b327d118 100644 --- a/sdk/dotnet/Eks/GetCluster.cs +++ b/sdk/dotnet/Eks/GetCluster.cs @@ -191,6 +191,10 @@ public sealed class GetClusterResult /// public readonly ImmutableDictionary Tags; /// + /// (Optional) Configuration block for the support policy to use for the cluster. + /// + public readonly ImmutableArray UpgradePolicies; + /// /// Kubernetes server version for the cluster. /// public readonly string Version; @@ -233,6 +237,8 @@ private GetClusterResult( ImmutableDictionary tags, + ImmutableArray upgradePolicies, + string version, Outputs.GetClusterVpcConfigResult vpcConfig) @@ -253,6 +259,7 @@ private GetClusterResult( RoleArn = roleArn; Status = status; Tags = tags; + UpgradePolicies = upgradePolicies; Version = version; VpcConfig = vpcConfig; } diff --git a/sdk/dotnet/Eks/Inputs/ClusterUpgradePolicyArgs.cs b/sdk/dotnet/Eks/Inputs/ClusterUpgradePolicyArgs.cs new file mode 100644 index 00000000000..97d8ea009d8 --- /dev/null +++ b/sdk/dotnet/Eks/Inputs/ClusterUpgradePolicyArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Eks.Inputs +{ + + public sealed class ClusterUpgradePolicyArgs : global::Pulumi.ResourceArgs + { + /// + /// Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + /// + [Input("supportType")] + public Input? SupportType { get; set; } + + public ClusterUpgradePolicyArgs() + { + } + public static new ClusterUpgradePolicyArgs Empty => new ClusterUpgradePolicyArgs(); + } +} diff --git a/sdk/dotnet/Eks/Inputs/ClusterUpgradePolicyGetArgs.cs b/sdk/dotnet/Eks/Inputs/ClusterUpgradePolicyGetArgs.cs new file mode 100644 index 00000000000..61983eee090 --- /dev/null +++ b/sdk/dotnet/Eks/Inputs/ClusterUpgradePolicyGetArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Eks.Inputs +{ + + public sealed class ClusterUpgradePolicyGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + /// + [Input("supportType")] + public Input? SupportType { get; set; } + + public ClusterUpgradePolicyGetArgs() + { + } + public static new ClusterUpgradePolicyGetArgs Empty => new ClusterUpgradePolicyGetArgs(); + } +} diff --git a/sdk/dotnet/Eks/Outputs/ClusterUpgradePolicy.cs b/sdk/dotnet/Eks/Outputs/ClusterUpgradePolicy.cs new file mode 100644 index 00000000000..6a162edd1de --- /dev/null +++ b/sdk/dotnet/Eks/Outputs/ClusterUpgradePolicy.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Eks.Outputs +{ + + [OutputType] + public sealed class ClusterUpgradePolicy + { + /// + /// Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + /// + public readonly string? SupportType; + + [OutputConstructor] + private ClusterUpgradePolicy(string? supportType) + { + SupportType = supportType; + } + } +} diff --git a/sdk/dotnet/Eks/Outputs/GetClusterUpgradePolicyResult.cs b/sdk/dotnet/Eks/Outputs/GetClusterUpgradePolicyResult.cs new file mode 100644 index 00000000000..5e8ca1bea1d --- /dev/null +++ b/sdk/dotnet/Eks/Outputs/GetClusterUpgradePolicyResult.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Eks.Outputs +{ + + [OutputType] + public sealed class GetClusterUpgradePolicyResult + { + /// + /// (Optional) Support type to use for the cluster. + /// + public readonly string SupportType; + + [OutputConstructor] + private GetClusterUpgradePolicyResult(string supportType) + { + SupportType = supportType; + } + } +} diff --git a/sdk/dotnet/ElastiCache/UserGroupAssociation.cs b/sdk/dotnet/ElastiCache/UserGroupAssociation.cs index 03f7a23dfd6..15755e2aad5 100644 --- a/sdk/dotnet/ElastiCache/UserGroupAssociation.cs +++ b/sdk/dotnet/ElastiCache/UserGroupAssociation.cs @@ -10,10 +10,6 @@ namespace Pulumi.Aws.ElastiCache { /// - /// Associate an existing ElastiCache user and an existing user group. - /// - /// > **NOTE:** The provider will detect changes in the `aws.elasticache.UserGroup` since `aws.elasticache.UserGroupAssociation` changes the user IDs associated with the user group. You can ignore these changes with the `ignore_changes` option as shown in the example. - /// /// ## Example Usage /// /// ```csharp diff --git a/sdk/dotnet/Inputs/ProviderEndpointArgs.cs b/sdk/dotnet/Inputs/ProviderEndpointArgs.cs index 35a57692e36..03f1351cc30 100644 --- a/sdk/dotnet/Inputs/ProviderEndpointArgs.cs +++ b/sdk/dotnet/Inputs/ProviderEndpointArgs.cs @@ -1350,6 +1350,12 @@ public sealed class ProviderEndpointArgs : global::Pulumi.ResourceArgs [Input("rekognition")] public Input? Rekognition { get; set; } + /// + /// Use this to override the default service endpoint URL + /// + [Input("resiliencehub")] + public Input? Resiliencehub { get; set; } + /// /// Use this to override the default service endpoint URL /// diff --git a/sdk/dotnet/Pipes/Inputs/PipeLogConfigurationArgs.cs b/sdk/dotnet/Pipes/Inputs/PipeLogConfigurationArgs.cs index c27c9b56821..3ec936ed140 100644 --- a/sdk/dotnet/Pipes/Inputs/PipeLogConfigurationArgs.cs +++ b/sdk/dotnet/Pipes/Inputs/PipeLogConfigurationArgs.cs @@ -24,6 +24,18 @@ public sealed class PipeLogConfigurationArgs : global::Pulumi.ResourceArgs [Input("firehoseLogDestination")] public Input? FirehoseLogDestination { get; set; } + [Input("includeExecutionDatas")] + private InputList? _includeExecutionDatas; + + /// + /// String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + /// + public InputList IncludeExecutionDatas + { + get => _includeExecutionDatas ?? (_includeExecutionDatas = new InputList()); + set => _includeExecutionDatas = value; + } + /// /// The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. /// diff --git a/sdk/dotnet/Pipes/Inputs/PipeLogConfigurationGetArgs.cs b/sdk/dotnet/Pipes/Inputs/PipeLogConfigurationGetArgs.cs index a317df54388..60838fb4474 100644 --- a/sdk/dotnet/Pipes/Inputs/PipeLogConfigurationGetArgs.cs +++ b/sdk/dotnet/Pipes/Inputs/PipeLogConfigurationGetArgs.cs @@ -24,6 +24,18 @@ public sealed class PipeLogConfigurationGetArgs : global::Pulumi.ResourceArgs [Input("firehoseLogDestination")] public Input? FirehoseLogDestination { get; set; } + [Input("includeExecutionDatas")] + private InputList? _includeExecutionDatas; + + /// + /// String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + /// + public InputList IncludeExecutionDatas + { + get => _includeExecutionDatas ?? (_includeExecutionDatas = new InputList()); + set => _includeExecutionDatas = value; + } + /// /// The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. /// diff --git a/sdk/dotnet/Pipes/Outputs/PipeLogConfiguration.cs b/sdk/dotnet/Pipes/Outputs/PipeLogConfiguration.cs index f93396f897b..e2c025bf5f2 100644 --- a/sdk/dotnet/Pipes/Outputs/PipeLogConfiguration.cs +++ b/sdk/dotnet/Pipes/Outputs/PipeLogConfiguration.cs @@ -22,6 +22,10 @@ public sealed class PipeLogConfiguration /// public readonly Outputs.PipeLogConfigurationFirehoseLogDestination? FirehoseLogDestination; /// + /// String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + /// + public readonly ImmutableArray IncludeExecutionDatas; + /// /// The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. /// public readonly string Level; @@ -36,12 +40,15 @@ private PipeLogConfiguration( Outputs.PipeLogConfigurationFirehoseLogDestination? firehoseLogDestination, + ImmutableArray includeExecutionDatas, + string level, Outputs.PipeLogConfigurationS3LogDestination? s3LogDestination) { CloudwatchLogsLogDestination = cloudwatchLogsLogDestination; FirehoseLogDestination = firehoseLogDestination; + IncludeExecutionDatas = includeExecutionDatas; Level = level; S3LogDestination = s3LogDestination; } diff --git a/sdk/dotnet/Pipes/Pipe.cs b/sdk/dotnet/Pipes/Pipe.cs index e2e7266e989..596f7f0cb19 100644 --- a/sdk/dotnet/Pipes/Pipe.cs +++ b/sdk/dotnet/Pipes/Pipe.cs @@ -209,6 +209,51 @@ namespace Pulumi.Aws.Pipes /// }); /// ``` /// + /// ### CloudWatch Logs Logging Configuration Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = new Aws.CloudWatch.LogGroup("example", new() + /// { + /// Name = "example-pipe-target", + /// }); + /// + /// var examplePipe = new Aws.Pipes.Pipe("example", new() + /// { + /// Name = "example-pipe", + /// RoleArn = exampleAwsIamRole.Arn, + /// Source = sourceAwsSqsQueue.Arn, + /// Target = targetAwsSqsQueue.Arn, + /// LogConfiguration = new Aws.Pipes.Inputs.PipeLogConfigurationArgs + /// { + /// IncludeExecutionDatas = new[] + /// { + /// "ALL", + /// }, + /// Level = "INFO", + /// CloudwatchLogsLogDestination = new Aws.Pipes.Inputs.PipeLogConfigurationCloudwatchLogsLogDestinationArgs + /// { + /// LogGroupArn = targetAwsCloudwatchLogGroup.Arn, + /// }, + /// }, + /// }, new CustomResourceOptions + /// { + /// DependsOn = + /// { + /// source, + /// target, + /// }, + /// }); + /// + /// }); + /// ``` + /// /// ## Import /// /// Using `pulumi import`, import pipes using the `name`. For example: diff --git a/sdk/dotnet/Rds/Cluster.cs b/sdk/dotnet/Rds/Cluster.cs index 5bc6ee31eb4..3e81d98ebf6 100644 --- a/sdk/dotnet/Rds/Cluster.cs +++ b/sdk/dotnet/Rds/Cluster.cs @@ -587,19 +587,37 @@ public partial class Cluster : global::Pulumi.CustomResource public Output NetworkType { get; private set; } = null!; /// - /// Port on which the DB accepts connections + /// Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + /// + [Output("performanceInsightsEnabled")] + public Output PerformanceInsightsEnabled { get; private set; } = null!; + + /// + /// Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + /// + [Output("performanceInsightsKmsKeyId")] + public Output PerformanceInsightsKmsKeyId { get; private set; } = null!; + + /// + /// Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + /// + [Output("performanceInsightsRetentionPeriod")] + public Output PerformanceInsightsRetentionPeriod { get; private set; } = null!; + + /// + /// Port on which the DB accepts connections. /// [Output("port")] public Output Port { get; private set; } = null!; /// - /// Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + /// Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. /// [Output("preferredBackupWindow")] public Output PreferredBackupWindow { get; private set; } = null!; /// - /// Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + /// Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` /// [Output("preferredMaintenanceWindow")] public Output PreferredMaintenanceWindow { get; private set; } = null!; @@ -1017,19 +1035,37 @@ public Input? MasterPassword public Input? NetworkType { get; set; } /// - /// Port on which the DB accepts connections + /// Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + /// + [Input("performanceInsightsEnabled")] + public Input? PerformanceInsightsEnabled { get; set; } + + /// + /// Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + /// + [Input("performanceInsightsKmsKeyId")] + public Input? PerformanceInsightsKmsKeyId { get; set; } + + /// + /// Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + /// + [Input("performanceInsightsRetentionPeriod")] + public Input? PerformanceInsightsRetentionPeriod { get; set; } + + /// + /// Port on which the DB accepts connections. /// [Input("port")] public Input? Port { get; set; } /// - /// Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + /// Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. /// [Input("preferredBackupWindow")] public Input? PreferredBackupWindow { get; set; } /// - /// Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + /// Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` /// [Input("preferredMaintenanceWindow")] public Input? PreferredMaintenanceWindow { get; set; } @@ -1452,19 +1488,37 @@ public InputList MasterUserSecrets public Input? NetworkType { get; set; } /// - /// Port on which the DB accepts connections + /// Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + /// + [Input("performanceInsightsEnabled")] + public Input? PerformanceInsightsEnabled { get; set; } + + /// + /// Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + /// + [Input("performanceInsightsKmsKeyId")] + public Input? PerformanceInsightsKmsKeyId { get; set; } + + /// + /// Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + /// + [Input("performanceInsightsRetentionPeriod")] + public Input? PerformanceInsightsRetentionPeriod { get; set; } + + /// + /// Port on which the DB accepts connections. /// [Input("port")] public Input? Port { get; set; } /// - /// Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + /// Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. /// [Input("preferredBackupWindow")] public Input? PreferredBackupWindow { get; set; } /// - /// Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + /// Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` /// [Input("preferredMaintenanceWindow")] public Input? PreferredMaintenanceWindow { get; set; } diff --git a/sdk/dotnet/Rds/Inputs/ClusterRestoreToPointInTimeArgs.cs b/sdk/dotnet/Rds/Inputs/ClusterRestoreToPointInTimeArgs.cs index 32b0a169654..018b7363031 100644 --- a/sdk/dotnet/Rds/Inputs/ClusterRestoreToPointInTimeArgs.cs +++ b/sdk/dotnet/Rds/Inputs/ClusterRestoreToPointInTimeArgs.cs @@ -28,8 +28,14 @@ public sealed class ClusterRestoreToPointInTimeArgs : global::Pulumi.ResourceArg /// /// Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. /// - [Input("sourceClusterIdentifier", required: true)] - public Input SourceClusterIdentifier { get; set; } = null!; + [Input("sourceClusterIdentifier")] + public Input? SourceClusterIdentifier { get; set; } + + /// + /// Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + /// + [Input("sourceClusterResourceId")] + public Input? SourceClusterResourceId { get; set; } /// /// Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restore_to_time`. diff --git a/sdk/dotnet/Rds/Inputs/ClusterRestoreToPointInTimeGetArgs.cs b/sdk/dotnet/Rds/Inputs/ClusterRestoreToPointInTimeGetArgs.cs index 86ad43ea565..996d8cc121e 100644 --- a/sdk/dotnet/Rds/Inputs/ClusterRestoreToPointInTimeGetArgs.cs +++ b/sdk/dotnet/Rds/Inputs/ClusterRestoreToPointInTimeGetArgs.cs @@ -28,8 +28,14 @@ public sealed class ClusterRestoreToPointInTimeGetArgs : global::Pulumi.Resource /// /// Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. /// - [Input("sourceClusterIdentifier", required: true)] - public Input SourceClusterIdentifier { get; set; } = null!; + [Input("sourceClusterIdentifier")] + public Input? SourceClusterIdentifier { get; set; } + + /// + /// Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + /// + [Input("sourceClusterResourceId")] + public Input? SourceClusterResourceId { get; set; } /// /// Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restore_to_time`. diff --git a/sdk/dotnet/Rds/Instance.cs b/sdk/dotnet/Rds/Instance.cs index 888c8b3e05c..70d93e70710 100644 --- a/sdk/dotnet/Rds/Instance.cs +++ b/sdk/dotnet/Rds/Instance.cs @@ -903,6 +903,12 @@ public partial class Instance : global::Pulumi.CustomResource [Output("timezone")] public Output Timezone { get; private set; } = null!; + /// + /// Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + /// + [Output("upgradeStorageConfig")] + public Output UpgradeStorageConfig { get; private set; } = null!; + /// /// (Required unless a `snapshot_identifier` or `replicate_source_db` /// is provided) Username for the master DB user. Cannot be specified for a replica. @@ -1468,6 +1474,12 @@ public InputMap Tags [Input("timezone")] public Input? Timezone { get; set; } + /// + /// Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + /// + [Input("upgradeStorageConfig")] + public Input? UpgradeStorageConfig { get; set; } + /// /// (Required unless a `snapshot_identifier` or `replicate_source_db` /// is provided) Username for the master DB user. Cannot be specified for a replica. @@ -2090,6 +2102,12 @@ public InputMap TagsAll [Input("timezone")] public Input? Timezone { get; set; } + /// + /// Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + /// + [Input("upgradeStorageConfig")] + public Input? UpgradeStorageConfig { get; set; } + /// /// (Required unless a `snapshot_identifier` or `replicate_source_db` /// is provided) Username for the master DB user. Cannot be specified for a replica. diff --git a/sdk/dotnet/Rds/Outputs/ClusterRestoreToPointInTime.cs b/sdk/dotnet/Rds/Outputs/ClusterRestoreToPointInTime.cs index 6443cc20e3e..cf1baab93e6 100644 --- a/sdk/dotnet/Rds/Outputs/ClusterRestoreToPointInTime.cs +++ b/sdk/dotnet/Rds/Outputs/ClusterRestoreToPointInTime.cs @@ -25,7 +25,11 @@ public sealed class ClusterRestoreToPointInTime /// /// Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. /// - public readonly string SourceClusterIdentifier; + public readonly string? SourceClusterIdentifier; + /// + /// Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + /// + public readonly string? SourceClusterResourceId; /// /// Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restore_to_time`. /// @@ -37,13 +41,16 @@ private ClusterRestoreToPointInTime( string? restoreType, - string sourceClusterIdentifier, + string? sourceClusterIdentifier, + + string? sourceClusterResourceId, bool? useLatestRestorableTime) { RestoreToTime = restoreToTime; RestoreType = restoreType; SourceClusterIdentifier = sourceClusterIdentifier; + SourceClusterResourceId = sourceClusterResourceId; UseLatestRestorableTime = useLatestRestorableTime; } } diff --git a/sdk/dotnet/S3/BucketNotification.cs b/sdk/dotnet/S3/BucketNotification.cs index dc47aa3b2b4..f8c07fcbf87 100644 --- a/sdk/dotnet/S3/BucketNotification.cs +++ b/sdk/dotnet/S3/BucketNotification.cs @@ -12,7 +12,7 @@ namespace Pulumi.Aws.S3 /// /// Manages a S3 Bucket Notification Configuration. For additional information, see the [Configuring S3 Event Notifications section in the Amazon S3 Developer Guide](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). /// - /// > **NOTE:** S3 Buckets only support a single notification configuration. Declaring multiple `aws.s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. See the example "Trigger multiple Lambda functions" for an option. + /// > **NOTE:** S3 Buckets only support a single notification configuration resource. Declaring multiple `aws.s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. This resource will overwrite any existing event notifications configured for the S3 bucket it's associated with. See the example "Trigger multiple Lambda functions" for an option of how to configure multiple triggers within this resource. /// /// > This resource cannot be used with S3 directory buckets. /// diff --git a/sdk/dotnet/Sagemaker/GetPrebuiltEcrImage.cs b/sdk/dotnet/Sagemaker/GetPrebuiltEcrImage.cs index 8e0b762b178..507cf9a50e3 100644 --- a/sdk/dotnet/Sagemaker/GetPrebuiltEcrImage.cs +++ b/sdk/dotnet/Sagemaker/GetPrebuiltEcrImage.cs @@ -92,7 +92,7 @@ public sealed class GetPrebuiltEcrImageArgs : global::Pulumi.InvokeArgs public string? Region { get; set; } /// - /// Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + /// Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. /// [Input("repositoryName", required: true)] public string RepositoryName { get; set; } = null!; @@ -124,7 +124,7 @@ public sealed class GetPrebuiltEcrImageInvokeArgs : global::Pulumi.InvokeArgs public Input? Region { get; set; } /// - /// Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + /// Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. /// [Input("repositoryName", required: true)] public Input RepositoryName { get; set; } = null!; diff --git a/sdk/dotnet/Sfn/Activity.cs b/sdk/dotnet/Sfn/Activity.cs index 04dd81939e0..7d08d57b455 100644 --- a/sdk/dotnet/Sfn/Activity.cs +++ b/sdk/dotnet/Sfn/Activity.cs @@ -14,6 +14,28 @@ namespace Pulumi.Aws.Sfn /// /// ## Example Usage /// + /// ### Basic + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var sfnActivity = new Aws.Sfn.Activity("sfn_activity", new() + /// { + /// Name = "my-activity", + /// }); + /// + /// }); + /// ``` + /// + /// ### Encryption + /// + /// > *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. + /// /// ```csharp /// using System.Collections.Generic; /// using System.Linq; @@ -25,6 +47,12 @@ namespace Pulumi.Aws.Sfn /// var sfnActivity = new Aws.Sfn.Activity("sfn_activity", new() /// { /// Name = "my-activity", + /// EncryptionConfiguration = new Aws.Sfn.Inputs.ActivityEncryptionConfigurationArgs + /// { + /// KmsKeyId = kmsKeyForSfn.Arn, + /// Type = "CUSTOMER_MANAGED_KMS_KEY", + /// KmsDataKeyReusePeriodSeconds = 900, + /// }, /// }); /// /// }); @@ -47,6 +75,12 @@ public partial class Activity : global::Pulumi.CustomResource [Output("creationDate")] public Output CreationDate { get; private set; } = null!; + /// + /// Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + /// + [Output("encryptionConfiguration")] + public Output EncryptionConfiguration { get; private set; } = null!; + /// /// The name of the activity to create. /// @@ -111,6 +145,12 @@ public static Activity Get(string name, Input id, ActivityState? state = public sealed class ActivityArgs : global::Pulumi.ResourceArgs { + /// + /// Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + /// + [Input("encryptionConfiguration")] + public Input? EncryptionConfiguration { get; set; } + /// /// The name of the activity to create. /// @@ -143,6 +183,12 @@ public sealed class ActivityState : global::Pulumi.ResourceArgs [Input("creationDate")] public Input? CreationDate { get; set; } + /// + /// Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + /// + [Input("encryptionConfiguration")] + public Input? EncryptionConfiguration { get; set; } + /// /// The name of the activity to create. /// diff --git a/sdk/dotnet/Sfn/Inputs/ActivityEncryptionConfigurationArgs.cs b/sdk/dotnet/Sfn/Inputs/ActivityEncryptionConfigurationArgs.cs new file mode 100644 index 00000000000..4935d18b71b --- /dev/null +++ b/sdk/dotnet/Sfn/Inputs/ActivityEncryptionConfigurationArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Sfn.Inputs +{ + + public sealed class ActivityEncryptionConfigurationArgs : global::Pulumi.ResourceArgs + { + /// + /// Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + /// + [Input("kmsDataKeyReusePeriodSeconds")] + public Input? KmsDataKeyReusePeriodSeconds { get; set; } + + /// + /// The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + /// + [Input("kmsKeyId")] + public Input? KmsKeyId { get; set; } + + /// + /// The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + /// + [Input("type")] + public Input? Type { get; set; } + + public ActivityEncryptionConfigurationArgs() + { + } + public static new ActivityEncryptionConfigurationArgs Empty => new ActivityEncryptionConfigurationArgs(); + } +} diff --git a/sdk/dotnet/Sfn/Inputs/ActivityEncryptionConfigurationGetArgs.cs b/sdk/dotnet/Sfn/Inputs/ActivityEncryptionConfigurationGetArgs.cs new file mode 100644 index 00000000000..01ad3c3f5ba --- /dev/null +++ b/sdk/dotnet/Sfn/Inputs/ActivityEncryptionConfigurationGetArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Sfn.Inputs +{ + + public sealed class ActivityEncryptionConfigurationGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + /// + [Input("kmsDataKeyReusePeriodSeconds")] + public Input? KmsDataKeyReusePeriodSeconds { get; set; } + + /// + /// The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + /// + [Input("kmsKeyId")] + public Input? KmsKeyId { get; set; } + + /// + /// The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + /// + [Input("type")] + public Input? Type { get; set; } + + public ActivityEncryptionConfigurationGetArgs() + { + } + public static new ActivityEncryptionConfigurationGetArgs Empty => new ActivityEncryptionConfigurationGetArgs(); + } +} diff --git a/sdk/dotnet/Sfn/Inputs/StateMachineEncryptionConfigurationArgs.cs b/sdk/dotnet/Sfn/Inputs/StateMachineEncryptionConfigurationArgs.cs new file mode 100644 index 00000000000..473f303023d --- /dev/null +++ b/sdk/dotnet/Sfn/Inputs/StateMachineEncryptionConfigurationArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Sfn.Inputs +{ + + public sealed class StateMachineEncryptionConfigurationArgs : global::Pulumi.ResourceArgs + { + /// + /// Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + /// + [Input("kmsDataKeyReusePeriodSeconds")] + public Input? KmsDataKeyReusePeriodSeconds { get; set; } + + /// + /// The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + /// + [Input("kmsKeyId")] + public Input? KmsKeyId { get; set; } + + /// + /// The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + /// + [Input("type")] + public Input? Type { get; set; } + + public StateMachineEncryptionConfigurationArgs() + { + } + public static new StateMachineEncryptionConfigurationArgs Empty => new StateMachineEncryptionConfigurationArgs(); + } +} diff --git a/sdk/dotnet/Sfn/Inputs/StateMachineEncryptionConfigurationGetArgs.cs b/sdk/dotnet/Sfn/Inputs/StateMachineEncryptionConfigurationGetArgs.cs new file mode 100644 index 00000000000..b01d1753232 --- /dev/null +++ b/sdk/dotnet/Sfn/Inputs/StateMachineEncryptionConfigurationGetArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Sfn.Inputs +{ + + public sealed class StateMachineEncryptionConfigurationGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + /// + [Input("kmsDataKeyReusePeriodSeconds")] + public Input? KmsDataKeyReusePeriodSeconds { get; set; } + + /// + /// The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + /// + [Input("kmsKeyId")] + public Input? KmsKeyId { get; set; } + + /// + /// The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + /// + [Input("type")] + public Input? Type { get; set; } + + public StateMachineEncryptionConfigurationGetArgs() + { + } + public static new StateMachineEncryptionConfigurationGetArgs Empty => new StateMachineEncryptionConfigurationGetArgs(); + } +} diff --git a/sdk/dotnet/Sfn/Outputs/ActivityEncryptionConfiguration.cs b/sdk/dotnet/Sfn/Outputs/ActivityEncryptionConfiguration.cs new file mode 100644 index 00000000000..ae589a4b2f5 --- /dev/null +++ b/sdk/dotnet/Sfn/Outputs/ActivityEncryptionConfiguration.cs @@ -0,0 +1,42 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Sfn.Outputs +{ + + [OutputType] + public sealed class ActivityEncryptionConfiguration + { + /// + /// Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + /// + public readonly int? KmsDataKeyReusePeriodSeconds; + /// + /// The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + /// + public readonly string? KmsKeyId; + /// + /// The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + /// + public readonly string? Type; + + [OutputConstructor] + private ActivityEncryptionConfiguration( + int? kmsDataKeyReusePeriodSeconds, + + string? kmsKeyId, + + string? type) + { + KmsDataKeyReusePeriodSeconds = kmsDataKeyReusePeriodSeconds; + KmsKeyId = kmsKeyId; + Type = type; + } + } +} diff --git a/sdk/dotnet/Sfn/Outputs/StateMachineEncryptionConfiguration.cs b/sdk/dotnet/Sfn/Outputs/StateMachineEncryptionConfiguration.cs new file mode 100644 index 00000000000..576b106cfe4 --- /dev/null +++ b/sdk/dotnet/Sfn/Outputs/StateMachineEncryptionConfiguration.cs @@ -0,0 +1,42 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.Sfn.Outputs +{ + + [OutputType] + public sealed class StateMachineEncryptionConfiguration + { + /// + /// Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + /// + public readonly int? KmsDataKeyReusePeriodSeconds; + /// + /// The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + /// + public readonly string? KmsKeyId; + /// + /// The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + /// + public readonly string? Type; + + [OutputConstructor] + private StateMachineEncryptionConfiguration( + int? kmsDataKeyReusePeriodSeconds, + + string? kmsKeyId, + + string? type) + { + KmsDataKeyReusePeriodSeconds = kmsDataKeyReusePeriodSeconds; + KmsKeyId = kmsKeyId; + Type = type; + } + } +} diff --git a/sdk/dotnet/Sfn/StateMachine.cs b/sdk/dotnet/Sfn/StateMachine.cs index ad81204f9be..c6272c7d8b3 100644 --- a/sdk/dotnet/Sfn/StateMachine.cs +++ b/sdk/dotnet/Sfn/StateMachine.cs @@ -153,6 +153,46 @@ namespace Pulumi.Aws.Sfn /// }); /// ``` /// + /// ### Encryption + /// + /// > *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. + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// // ... + /// var sfnStateMachine = new Aws.Sfn.StateMachine("sfn_state_machine", new() + /// { + /// 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 + /// }} + /// }} + /// }} + /// ", + /// EncryptionConfiguration = new Aws.Sfn.Inputs.StateMachineEncryptionConfigurationArgs + /// { + /// KmsKeyId = kmsKeyForSfn.Arn, + /// Type = "CUSTOMER_MANAGED_KMS_KEY", + /// KmsDataKeyReusePeriodSeconds = 900, + /// }, + /// }); + /// + /// }); + /// ``` + /// /// ## Import /// /// Using `pulumi import`, import State Machines using the `arn`. For example: @@ -185,6 +225,12 @@ public partial class StateMachine : global::Pulumi.CustomResource [Output("description")] public Output Description { get; private set; } = null!; + /// + /// Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + /// + [Output("encryptionConfiguration")] + public Output EncryptionConfiguration { get; private set; } = null!; + /// /// Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. /// @@ -309,6 +355,12 @@ public sealed class StateMachineArgs : global::Pulumi.ResourceArgs [Input("definition", required: true)] public Input Definition { get; set; } = null!; + /// + /// Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + /// + [Input("encryptionConfiguration")] + public Input? EncryptionConfiguration { get; set; } + /// /// Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. /// @@ -392,6 +444,12 @@ public sealed class StateMachineState : global::Pulumi.ResourceArgs [Input("description")] public Input? Description { get; set; } + /// + /// Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + /// + [Input("encryptionConfiguration")] + public Input? EncryptionConfiguration { get; set; } + /// /// Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. /// diff --git a/sdk/dotnet/TimestreamInfluxDB/DbInstance.cs b/sdk/dotnet/TimestreamInfluxDB/DbInstance.cs new file mode 100644 index 00000000000..558c4d178e6 --- /dev/null +++ b/sdk/dotnet/TimestreamInfluxDB/DbInstance.cs @@ -0,0 +1,726 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.TimestreamInfluxDB +{ + /// + /// Resource for managing an Amazon Timestream for InfluxDB Db Instance. + /// + /// ## Example Usage + /// + /// ### Basic Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = new Aws.TimestreamInfluxDB.DbInstance("example", new() + /// { + /// AllocatedStorage = 20, + /// Bucket = "example-bucket-name", + /// DbInstanceType = "db.influx.medium", + /// Username = "admin", + /// Password = "example-password", + /// Organization = "organization", + /// VpcSubnetIds = new[] + /// { + /// exampleid, + /// }, + /// VpcSecurityGroupIds = new[] + /// { + /// exampleAwsSecurityGroup.Id, + /// }, + /// Name = "example-db-instance", + /// }); + /// + /// }); + /// ``` + /// + /// ### Usage with Prerequisite Resources + /// + /// All Timestream for InfluxDB instances require a VPC, subnet, and security group. The following example shows how these prerequisite resources can be created and used with `aws.timestreaminfluxdb.DbInstance`. + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = new Aws.Ec2.Vpc("example", new() + /// { + /// CidrBlock = "10.0.0.0/16", + /// }); + /// + /// var exampleSubnet = new Aws.Ec2.Subnet("example", new() + /// { + /// VpcId = example.Id, + /// CidrBlock = "10.0.1.0/24", + /// }); + /// + /// var exampleSecurityGroup = new Aws.Ec2.SecurityGroup("example", new() + /// { + /// Name = "example", + /// VpcId = example.Id, + /// }); + /// + /// var exampleDbInstance = new Aws.TimestreamInfluxDB.DbInstance("example", new() + /// { + /// AllocatedStorage = 20, + /// Bucket = "example-bucket-name", + /// DbInstanceType = "db.influx.medium", + /// Username = "admin", + /// Password = "example-password", + /// Organization = "organization", + /// VpcSubnetIds = new[] + /// { + /// exampleSubnet.Id, + /// }, + /// VpcSecurityGroupIds = new[] + /// { + /// exampleSecurityGroup.Id, + /// }, + /// Name = "example-db-instance", + /// }); + /// + /// }); + /// ``` + /// + /// ### Usage with S3 Log Delivery Enabled + /// + /// You can use an S3 bucket to store logs generated by your Timestream for InfluxDB instance. The following example shows what resources and arguments are required to configure an S3 bucket for logging, including the IAM policy that needs to be set in order to allow Timestream for InfluxDB to place logs in your S3 bucket. The configuration of the required VPC, security group, and subnet have been left out of the example for brevity. + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var exampleBucketV2 = new Aws.S3.BucketV2("example", new() + /// { + /// Bucket = "example-s3-bucket", + /// }); + /// + /// var example = Aws.Iam.GetPolicyDocument.Invoke(new() + /// { + /// Statements = new[] + /// { + /// new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs + /// { + /// Actions = new[] + /// { + /// "s3:PutObject", + /// }, + /// Principals = new[] + /// { + /// new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs + /// { + /// Type = "Service", + /// Identifiers = new[] + /// { + /// "timestream-influxdb.amazonaws.com", + /// }, + /// }, + /// }, + /// Resources = new[] + /// { + /// $"{exampleBucketV2.Arn}/*", + /// }, + /// }, + /// }, + /// }); + /// + /// var exampleBucketPolicy = new Aws.S3.BucketPolicy("example", new() + /// { + /// Bucket = exampleBucketV2.Id, + /// Policy = example.Apply(getPolicyDocumentResult => getPolicyDocumentResult.Json), + /// }); + /// + /// var exampleDbInstance = new Aws.TimestreamInfluxDB.DbInstance("example", new() + /// { + /// AllocatedStorage = 20, + /// Bucket = "example-bucket-name", + /// DbInstanceType = "db.influx.medium", + /// Username = "admin", + /// Password = "example-password", + /// Organization = "organization", + /// VpcSubnetIds = new[] + /// { + /// exampleAwsSubnet.Id, + /// }, + /// VpcSecurityGroupIds = new[] + /// { + /// exampleAwsSecurityGroup.Id, + /// }, + /// Name = "example-db-instance", + /// LogDeliveryConfiguration = new Aws.TimestreamInfluxDB.Inputs.DbInstanceLogDeliveryConfigurationArgs + /// { + /// S3Configuration = new Aws.TimestreamInfluxDB.Inputs.DbInstanceLogDeliveryConfigurationS3ConfigurationArgs + /// { + /// BucketName = exampleBucketV2.Name, + /// Enabled = true, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// + /// ### Usage with MultiAZ Deployment + /// + /// To use multi-region availability, at least two subnets must be created in different availability zones and used with your Timestream for InfluxDB instance. + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example1 = new Aws.Ec2.Subnet("example_1", new() + /// { + /// VpcId = exampleAwsVpc.Id, + /// CidrBlock = "10.0.1.0/24", + /// AvailabilityZone = "us-west-2a", + /// }); + /// + /// var example2 = new Aws.Ec2.Subnet("example_2", new() + /// { + /// VpcId = exampleAwsVpc.Id, + /// CidrBlock = "10.0.2.0/24", + /// AvailabilityZone = "us-west-2b", + /// }); + /// + /// var example = new Aws.TimestreamInfluxDB.DbInstance("example", new() + /// { + /// AllocatedStorage = 20, + /// Bucket = "example-bucket-name", + /// DbInstanceType = "db.influx.medium", + /// DeploymentType = "WITH_MULTIAZ_STANDBY", + /// Username = "admin", + /// Password = "example-password", + /// Organization = "organization", + /// VpcSubnetIds = new[] + /// { + /// example1.Id, + /// example2.Id, + /// }, + /// VpcSecurityGroupIds = new[] + /// { + /// exampleAwsSecurityGroup.Id, + /// }, + /// Name = "example-db-instance", + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// Using `pulumi import`, import Timestream for InfluxDB Db Instance using its identifier. For example: + /// + /// ```sh + /// $ pulumi import aws:timestreaminfluxdb/dbInstance:DbInstance example 12345abcde + /// ``` + /// + [AwsResourceType("aws:timestreaminfluxdb/dbInstance:DbInstance")] + public partial class DbInstance : global::Pulumi.CustomResource + { + /// + /// Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + /// + [Output("allocatedStorage")] + public Output AllocatedStorage { get; private set; } = null!; + + /// + /// ARN of the Timestream for InfluxDB Instance. + /// + [Output("arn")] + public Output Arn { get; private set; } = null!; + + /// + /// Availability Zone in which the DB instance resides. + /// + [Output("availabilityZone")] + public Output AvailabilityZone { get; private set; } = null!; + + /// + /// Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + /// + [Output("bucket")] + public Output Bucket { get; private set; } = null!; + + /// + /// Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + /// + [Output("dbInstanceType")] + public Output DbInstanceType { get; private set; } = null!; + + /// + /// ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + /// + [Output("dbParameterGroupIdentifier")] + public Output DbParameterGroupIdentifier { get; private set; } = null!; + + /// + /// Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use `"InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + /// + [Output("dbStorageType")] + public Output DbStorageType { get; private set; } = null!; + + /// + /// Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + /// + [Output("deploymentType")] + public Output DeploymentType { get; private set; } = null!; + + /// + /// Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + /// + [Output("endpoint")] + public Output Endpoint { get; private set; } = null!; + + /// + /// ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `aws.timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + /// + [Output("influxAuthParametersSecretArn")] + public Output InfluxAuthParametersSecretArn { get; private set; } = null!; + + /// + /// Configuration for sending InfluxDB engine logs to a specified S3 bucket. + /// + [Output("logDeliveryConfiguration")] + public Output LogDeliveryConfiguration { get; private set; } = null!; + + /// + /// Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + /// + [Output("organization")] + public Output Organization { get; private set; } = null!; + + /// + /// Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + /// + [Output("password")] + public Output Password { get; private set; } = null!; + + /// + /// Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + /// + [Output("publiclyAccessible")] + public Output PubliclyAccessible { get; private set; } = null!; + + /// + /// Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + /// + [Output("secondaryAvailabilityZone")] + public Output SecondaryAvailabilityZone { get; private set; } = null!; + + /// + /// Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + /// + [Output("tags")] + public Output?> Tags { get; private set; } = null!; + + /// + /// Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + /// + [Output("tagsAll")] + public Output> TagsAll { get; private set; } = null!; + + [Output("timeouts")] + public Output Timeouts { get; private set; } = null!; + + /// + /// Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + /// + [Output("username")] + public Output Username { get; private set; } = null!; + + /// + /// List of VPC security group IDs to associate with the DB instance. + /// + [Output("vpcSecurityGroupIds")] + public Output> VpcSecurityGroupIds { get; private set; } = null!; + + /// + /// List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + /// + /// The following arguments are optional: + /// + [Output("vpcSubnetIds")] + public Output> VpcSubnetIds { get; private set; } = null!; + + + /// + /// Create a DbInstance resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public DbInstance(string name, DbInstanceArgs args, CustomResourceOptions? options = null) + : base("aws:timestreaminfluxdb/dbInstance:DbInstance", name, args ?? new DbInstanceArgs(), MakeResourceOptions(options, "")) + { + } + + private DbInstance(string name, Input id, DbInstanceState? state = null, CustomResourceOptions? options = null) + : base("aws:timestreaminfluxdb/dbInstance:DbInstance", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + AdditionalSecretOutputs = + { + "password", + }, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing DbInstance resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static DbInstance Get(string name, Input id, DbInstanceState? state = null, CustomResourceOptions? options = null) + { + return new DbInstance(name, id, state, options); + } + } + + public sealed class DbInstanceArgs : global::Pulumi.ResourceArgs + { + /// + /// Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + /// + [Input("allocatedStorage", required: true)] + public Input AllocatedStorage { get; set; } = null!; + + /// + /// Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + /// + [Input("bucket", required: true)] + public Input Bucket { get; set; } = null!; + + /// + /// Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + /// + [Input("dbInstanceType", required: true)] + public Input DbInstanceType { get; set; } = null!; + + /// + /// ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + /// + [Input("dbParameterGroupIdentifier")] + public Input? DbParameterGroupIdentifier { get; set; } + + /// + /// Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use `"InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + /// + [Input("dbStorageType")] + public Input? DbStorageType { get; set; } + + /// + /// Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + /// + [Input("deploymentType")] + public Input? DeploymentType { get; set; } + + /// + /// Configuration for sending InfluxDB engine logs to a specified S3 bucket. + /// + [Input("logDeliveryConfiguration")] + public Input? LogDeliveryConfiguration { get; set; } + + /// + /// Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + /// + [Input("organization", required: true)] + public Input Organization { get; set; } = null!; + + [Input("password", required: true)] + private Input? _password; + + /// + /// Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + /// + public Input? Password + { + get => _password; + set + { + var emptySecret = Output.CreateSecret(0); + _password = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + /// + [Input("publiclyAccessible")] + public Input? PubliclyAccessible { get; set; } + + [Input("tags")] + private InputMap? _tags; + + /// + /// Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + /// + public InputMap Tags + { + get => _tags ?? (_tags = new InputMap()); + set => _tags = value; + } + + [Input("timeouts")] + public Input? Timeouts { get; set; } + + /// + /// Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + /// + [Input("username", required: true)] + public Input Username { get; set; } = null!; + + [Input("vpcSecurityGroupIds", required: true)] + private InputList? _vpcSecurityGroupIds; + + /// + /// List of VPC security group IDs to associate with the DB instance. + /// + public InputList VpcSecurityGroupIds + { + get => _vpcSecurityGroupIds ?? (_vpcSecurityGroupIds = new InputList()); + set => _vpcSecurityGroupIds = value; + } + + [Input("vpcSubnetIds", required: true)] + private InputList? _vpcSubnetIds; + + /// + /// List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + /// + /// The following arguments are optional: + /// + public InputList VpcSubnetIds + { + get => _vpcSubnetIds ?? (_vpcSubnetIds = new InputList()); + set => _vpcSubnetIds = value; + } + + public DbInstanceArgs() + { + } + public static new DbInstanceArgs Empty => new DbInstanceArgs(); + } + + public sealed class DbInstanceState : global::Pulumi.ResourceArgs + { + /// + /// Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + /// + [Input("allocatedStorage")] + public Input? AllocatedStorage { get; set; } + + /// + /// ARN of the Timestream for InfluxDB Instance. + /// + [Input("arn")] + public Input? Arn { get; set; } + + /// + /// Availability Zone in which the DB instance resides. + /// + [Input("availabilityZone")] + public Input? AvailabilityZone { get; set; } + + /// + /// Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + /// + [Input("bucket")] + public Input? Bucket { get; set; } + + /// + /// Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + /// + [Input("dbInstanceType")] + public Input? DbInstanceType { get; set; } + + /// + /// ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + /// + [Input("dbParameterGroupIdentifier")] + public Input? DbParameterGroupIdentifier { get; set; } + + /// + /// Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use `"InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + /// + [Input("dbStorageType")] + public Input? DbStorageType { get; set; } + + /// + /// Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + /// + [Input("deploymentType")] + public Input? DeploymentType { get; set; } + + /// + /// Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + /// + [Input("endpoint")] + public Input? Endpoint { get; set; } + + /// + /// ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `aws.timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + /// + [Input("influxAuthParametersSecretArn")] + public Input? InfluxAuthParametersSecretArn { get; set; } + + /// + /// Configuration for sending InfluxDB engine logs to a specified S3 bucket. + /// + [Input("logDeliveryConfiguration")] + public Input? LogDeliveryConfiguration { get; set; } + + /// + /// Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + /// + [Input("organization")] + public Input? Organization { get; set; } + + [Input("password")] + private Input? _password; + + /// + /// Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + /// + public Input? Password + { + get => _password; + set + { + var emptySecret = Output.CreateSecret(0); + _password = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + /// + [Input("publiclyAccessible")] + public Input? PubliclyAccessible { get; set; } + + /// + /// Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + /// + [Input("secondaryAvailabilityZone")] + public Input? SecondaryAvailabilityZone { get; set; } + + [Input("tags")] + private InputMap? _tags; + + /// + /// Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + /// + public InputMap Tags + { + get => _tags ?? (_tags = new InputMap()); + set => _tags = value; + } + + [Input("tagsAll")] + private InputMap? _tagsAll; + + /// + /// Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + /// + [Obsolete(@"Please use `tags` instead.")] + public InputMap TagsAll + { + get => _tagsAll ?? (_tagsAll = new InputMap()); + set => _tagsAll = value; + } + + [Input("timeouts")] + public Input? Timeouts { get; set; } + + /// + /// Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + /// + [Input("username")] + public Input? Username { get; set; } + + [Input("vpcSecurityGroupIds")] + private InputList? _vpcSecurityGroupIds; + + /// + /// List of VPC security group IDs to associate with the DB instance. + /// + public InputList VpcSecurityGroupIds + { + get => _vpcSecurityGroupIds ?? (_vpcSecurityGroupIds = new InputList()); + set => _vpcSecurityGroupIds = value; + } + + [Input("vpcSubnetIds")] + private InputList? _vpcSubnetIds; + + /// + /// List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + /// + /// The following arguments are optional: + /// + public InputList VpcSubnetIds + { + get => _vpcSubnetIds ?? (_vpcSubnetIds = new InputList()); + set => _vpcSubnetIds = value; + } + + public DbInstanceState() + { + } + public static new DbInstanceState Empty => new DbInstanceState(); + } +} diff --git a/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationArgs.cs b/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationArgs.cs new file mode 100644 index 00000000000..d505f451875 --- /dev/null +++ b/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.TimestreamInfluxDB.Inputs +{ + + public sealed class DbInstanceLogDeliveryConfigurationArgs : global::Pulumi.ResourceArgs + { + /// + /// Configuration for S3 bucket log delivery. + /// + [Input("s3Configuration")] + public Input? S3Configuration { get; set; } + + public DbInstanceLogDeliveryConfigurationArgs() + { + } + public static new DbInstanceLogDeliveryConfigurationArgs Empty => new DbInstanceLogDeliveryConfigurationArgs(); + } +} diff --git a/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationGetArgs.cs b/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationGetArgs.cs new file mode 100644 index 00000000000..76242c7722b --- /dev/null +++ b/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationGetArgs.cs @@ -0,0 +1,26 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.TimestreamInfluxDB.Inputs +{ + + public sealed class DbInstanceLogDeliveryConfigurationGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Configuration for S3 bucket log delivery. + /// + [Input("s3Configuration")] + public Input? S3Configuration { get; set; } + + public DbInstanceLogDeliveryConfigurationGetArgs() + { + } + public static new DbInstanceLogDeliveryConfigurationGetArgs Empty => new DbInstanceLogDeliveryConfigurationGetArgs(); + } +} diff --git a/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationS3ConfigurationArgs.cs b/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationS3ConfigurationArgs.cs new file mode 100644 index 00000000000..1c67bff1351 --- /dev/null +++ b/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationS3ConfigurationArgs.cs @@ -0,0 +1,34 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.TimestreamInfluxDB.Inputs +{ + + public sealed class DbInstanceLogDeliveryConfigurationS3ConfigurationArgs : global::Pulumi.ResourceArgs + { + /// + /// Name of the S3 bucket to deliver logs to. + /// + [Input("bucketName", required: true)] + public Input BucketName { get; set; } = null!; + + /// + /// Indicates whether log delivery to the S3 bucket is enabled. + /// + /// **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + /// + [Input("enabled", required: true)] + public Input Enabled { get; set; } = null!; + + public DbInstanceLogDeliveryConfigurationS3ConfigurationArgs() + { + } + public static new DbInstanceLogDeliveryConfigurationS3ConfigurationArgs Empty => new DbInstanceLogDeliveryConfigurationS3ConfigurationArgs(); + } +} diff --git a/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationS3ConfigurationGetArgs.cs b/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationS3ConfigurationGetArgs.cs new file mode 100644 index 00000000000..e7751334af0 --- /dev/null +++ b/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceLogDeliveryConfigurationS3ConfigurationGetArgs.cs @@ -0,0 +1,34 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.TimestreamInfluxDB.Inputs +{ + + public sealed class DbInstanceLogDeliveryConfigurationS3ConfigurationGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Name of the S3 bucket to deliver logs to. + /// + [Input("bucketName", required: true)] + public Input BucketName { get; set; } = null!; + + /// + /// Indicates whether log delivery to the S3 bucket is enabled. + /// + /// **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + /// + [Input("enabled", required: true)] + public Input Enabled { get; set; } = null!; + + public DbInstanceLogDeliveryConfigurationS3ConfigurationGetArgs() + { + } + public static new DbInstanceLogDeliveryConfigurationS3ConfigurationGetArgs Empty => new DbInstanceLogDeliveryConfigurationS3ConfigurationGetArgs(); + } +} diff --git a/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceTimeoutsArgs.cs b/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceTimeoutsArgs.cs new file mode 100644 index 00000000000..57df8fe53df --- /dev/null +++ b/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceTimeoutsArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.TimestreamInfluxDB.Inputs +{ + + public sealed class DbInstanceTimeoutsArgs : global::Pulumi.ResourceArgs + { + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + [Input("create")] + public Input? Create { get; set; } + + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + /// + [Input("delete")] + public Input? Delete { get; set; } + + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + [Input("update")] + public Input? Update { get; set; } + + public DbInstanceTimeoutsArgs() + { + } + public static new DbInstanceTimeoutsArgs Empty => new DbInstanceTimeoutsArgs(); + } +} diff --git a/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceTimeoutsGetArgs.cs b/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceTimeoutsGetArgs.cs new file mode 100644 index 00000000000..c1bb6489923 --- /dev/null +++ b/sdk/dotnet/TimestreamInfluxDB/Inputs/DbInstanceTimeoutsGetArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.TimestreamInfluxDB.Inputs +{ + + public sealed class DbInstanceTimeoutsGetArgs : global::Pulumi.ResourceArgs + { + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + [Input("create")] + public Input? Create { get; set; } + + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + /// + [Input("delete")] + public Input? Delete { get; set; } + + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + [Input("update")] + public Input? Update { get; set; } + + public DbInstanceTimeoutsGetArgs() + { + } + public static new DbInstanceTimeoutsGetArgs Empty => new DbInstanceTimeoutsGetArgs(); + } +} diff --git a/sdk/dotnet/TimestreamInfluxDB/Outputs/DbInstanceLogDeliveryConfiguration.cs b/sdk/dotnet/TimestreamInfluxDB/Outputs/DbInstanceLogDeliveryConfiguration.cs new file mode 100644 index 00000000000..0b7f3173abd --- /dev/null +++ b/sdk/dotnet/TimestreamInfluxDB/Outputs/DbInstanceLogDeliveryConfiguration.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.TimestreamInfluxDB.Outputs +{ + + [OutputType] + public sealed class DbInstanceLogDeliveryConfiguration + { + /// + /// Configuration for S3 bucket log delivery. + /// + public readonly Outputs.DbInstanceLogDeliveryConfigurationS3Configuration? S3Configuration; + + [OutputConstructor] + private DbInstanceLogDeliveryConfiguration(Outputs.DbInstanceLogDeliveryConfigurationS3Configuration? s3Configuration) + { + S3Configuration = s3Configuration; + } + } +} diff --git a/sdk/dotnet/TimestreamInfluxDB/Outputs/DbInstanceLogDeliveryConfigurationS3Configuration.cs b/sdk/dotnet/TimestreamInfluxDB/Outputs/DbInstanceLogDeliveryConfigurationS3Configuration.cs new file mode 100644 index 00000000000..cd0412351b6 --- /dev/null +++ b/sdk/dotnet/TimestreamInfluxDB/Outputs/DbInstanceLogDeliveryConfigurationS3Configuration.cs @@ -0,0 +1,37 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.TimestreamInfluxDB.Outputs +{ + + [OutputType] + public sealed class DbInstanceLogDeliveryConfigurationS3Configuration + { + /// + /// Name of the S3 bucket to deliver logs to. + /// + public readonly string BucketName; + /// + /// Indicates whether log delivery to the S3 bucket is enabled. + /// + /// **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + /// + public readonly bool Enabled; + + [OutputConstructor] + private DbInstanceLogDeliveryConfigurationS3Configuration( + string bucketName, + + bool enabled) + { + BucketName = bucketName; + Enabled = enabled; + } + } +} diff --git a/sdk/dotnet/TimestreamInfluxDB/Outputs/DbInstanceTimeouts.cs b/sdk/dotnet/TimestreamInfluxDB/Outputs/DbInstanceTimeouts.cs new file mode 100644 index 00000000000..5ba3ea48649 --- /dev/null +++ b/sdk/dotnet/TimestreamInfluxDB/Outputs/DbInstanceTimeouts.cs @@ -0,0 +1,42 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Aws.TimestreamInfluxDB.Outputs +{ + + [OutputType] + public sealed class DbInstanceTimeouts + { + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + public readonly string? Create; + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + /// + public readonly string? Delete; + /// + /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + /// + public readonly string? Update; + + [OutputConstructor] + private DbInstanceTimeouts( + string? create, + + string? delete, + + string? update) + { + Create = create; + Delete = delete; + Update = update; + } + } +} diff --git a/sdk/dotnet/TimestreamInfluxDB/README.md b/sdk/dotnet/TimestreamInfluxDB/README.md new file mode 100644 index 00000000000..9d868f18f20 --- /dev/null +++ b/sdk/dotnet/TimestreamInfluxDB/README.md @@ -0,0 +1 @@ +A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources. diff --git a/sdk/dotnet/WafV2/WebAcl.cs b/sdk/dotnet/WafV2/WebAcl.cs index da85df6fc2d..9a077804210 100644 --- a/sdk/dotnet/WafV2/WebAcl.cs +++ b/sdk/dotnet/WafV2/WebAcl.cs @@ -75,6 +75,12 @@ public partial class WebAcl : global::Pulumi.CustomResource [Output("name")] public Output Name { get; private set; } = null!; + /// + /// Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + /// + [Output("ruleJson")] + public Output RuleJson { get; private set; } = null!; + /// /// Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. /// @@ -205,6 +211,12 @@ public InputList CustomResponseBodies [Input("name")] public Input? Name { get; set; } + /// + /// Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + /// + [Input("ruleJson")] + public Input? RuleJson { get; set; } + [Input("rules")] private InputList? _rules; @@ -330,6 +342,12 @@ public InputList CustomResponseBodies [Input("name")] public Input? Name { get; set; } + /// + /// Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + /// + [Input("ruleJson")] + public Input? RuleJson { get; set; } + [Input("rules")] private InputList? _rules; diff --git a/sdk/go/aws/appsync/graphQLApi.go b/sdk/go/aws/appsync/graphQLApi.go index 5e46b533534..1a9581002b4 100644 --- a/sdk/go/aws/appsync/graphQLApi.go +++ b/sdk/go/aws/appsync/graphQLApi.go @@ -21,6 +21,8 @@ type GraphQLApi struct { Arn pulumi.StringOutput `pulumi:"arn"` // Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA` AuthenticationType pulumi.StringOutput `pulumi:"authenticationType"` + // Enables and controls the enhanced metrics feature. See `enhancedMetricsConfig` Block for details. + EnhancedMetricsConfig GraphQLApiEnhancedMetricsConfigPtrOutput `pulumi:"enhancedMetricsConfig"` // Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). IntrospectionConfig pulumi.StringPtrOutput `pulumi:"introspectionConfig"` // Nested argument containing Lambda authorizer configuration. See `lambdaAuthorizerConfig` Block for details. @@ -28,6 +30,8 @@ type GraphQLApi struct { // Nested argument containing logging configuration. See `logConfig` Block for details. LogConfig GraphQLApiLogConfigPtrOutput `pulumi:"logConfig"` // User-supplied name for the GraphSQL API. + // + // The following arguments are optional: Name pulumi.StringOutput `pulumi:"name"` // Nested argument containing OpenID Connect configuration. See `openidConnectConfig` Block for details. OpenidConnectConfig GraphQLApiOpenidConnectConfigPtrOutput `pulumi:"openidConnectConfig"` @@ -94,6 +98,8 @@ type graphQLApiState struct { Arn *string `pulumi:"arn"` // Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA` AuthenticationType *string `pulumi:"authenticationType"` + // Enables and controls the enhanced metrics feature. See `enhancedMetricsConfig` Block for details. + EnhancedMetricsConfig *GraphQLApiEnhancedMetricsConfig `pulumi:"enhancedMetricsConfig"` // Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). IntrospectionConfig *string `pulumi:"introspectionConfig"` // Nested argument containing Lambda authorizer configuration. See `lambdaAuthorizerConfig` Block for details. @@ -101,6 +107,8 @@ type graphQLApiState struct { // Nested argument containing logging configuration. See `logConfig` Block for details. LogConfig *GraphQLApiLogConfig `pulumi:"logConfig"` // User-supplied name for the GraphSQL API. + // + // The following arguments are optional: Name *string `pulumi:"name"` // Nested argument containing OpenID Connect configuration. See `openidConnectConfig` Block for details. OpenidConnectConfig *GraphQLApiOpenidConnectConfig `pulumi:"openidConnectConfig"` @@ -135,6 +143,8 @@ type GraphQLApiState struct { Arn pulumi.StringPtrInput // Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA` AuthenticationType pulumi.StringPtrInput + // Enables and controls the enhanced metrics feature. See `enhancedMetricsConfig` Block for details. + EnhancedMetricsConfig GraphQLApiEnhancedMetricsConfigPtrInput // Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). IntrospectionConfig pulumi.StringPtrInput // Nested argument containing Lambda authorizer configuration. See `lambdaAuthorizerConfig` Block for details. @@ -142,6 +152,8 @@ type GraphQLApiState struct { // Nested argument containing logging configuration. See `logConfig` Block for details. LogConfig GraphQLApiLogConfigPtrInput // User-supplied name for the GraphSQL API. + // + // The following arguments are optional: Name pulumi.StringPtrInput // Nested argument containing OpenID Connect configuration. See `openidConnectConfig` Block for details. OpenidConnectConfig GraphQLApiOpenidConnectConfigPtrInput @@ -178,6 +190,8 @@ type graphQLApiArgs struct { AdditionalAuthenticationProviders []GraphQLApiAdditionalAuthenticationProvider `pulumi:"additionalAuthenticationProviders"` // Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA` AuthenticationType string `pulumi:"authenticationType"` + // Enables and controls the enhanced metrics feature. See `enhancedMetricsConfig` Block for details. + EnhancedMetricsConfig *GraphQLApiEnhancedMetricsConfig `pulumi:"enhancedMetricsConfig"` // Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). IntrospectionConfig *string `pulumi:"introspectionConfig"` // Nested argument containing Lambda authorizer configuration. See `lambdaAuthorizerConfig` Block for details. @@ -185,6 +199,8 @@ type graphQLApiArgs struct { // Nested argument containing logging configuration. See `logConfig` Block for details. LogConfig *GraphQLApiLogConfig `pulumi:"logConfig"` // User-supplied name for the GraphSQL API. + // + // The following arguments are optional: Name *string `pulumi:"name"` // Nested argument containing OpenID Connect configuration. See `openidConnectConfig` Block for details. OpenidConnectConfig *GraphQLApiOpenidConnectConfig `pulumi:"openidConnectConfig"` @@ -212,6 +228,8 @@ type GraphQLApiArgs struct { AdditionalAuthenticationProviders GraphQLApiAdditionalAuthenticationProviderArrayInput // Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA` AuthenticationType pulumi.StringInput + // Enables and controls the enhanced metrics feature. See `enhancedMetricsConfig` Block for details. + EnhancedMetricsConfig GraphQLApiEnhancedMetricsConfigPtrInput // Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). IntrospectionConfig pulumi.StringPtrInput // Nested argument containing Lambda authorizer configuration. See `lambdaAuthorizerConfig` Block for details. @@ -219,6 +237,8 @@ type GraphQLApiArgs struct { // Nested argument containing logging configuration. See `logConfig` Block for details. LogConfig GraphQLApiLogConfigPtrInput // User-supplied name for the GraphSQL API. + // + // The following arguments are optional: Name pulumi.StringPtrInput // Nested argument containing OpenID Connect configuration. See `openidConnectConfig` Block for details. OpenidConnectConfig GraphQLApiOpenidConnectConfigPtrInput @@ -344,6 +364,11 @@ func (o GraphQLApiOutput) AuthenticationType() pulumi.StringOutput { return o.ApplyT(func(v *GraphQLApi) pulumi.StringOutput { return v.AuthenticationType }).(pulumi.StringOutput) } +// Enables and controls the enhanced metrics feature. See `enhancedMetricsConfig` Block for details. +func (o GraphQLApiOutput) EnhancedMetricsConfig() GraphQLApiEnhancedMetricsConfigPtrOutput { + return o.ApplyT(func(v *GraphQLApi) GraphQLApiEnhancedMetricsConfigPtrOutput { return v.EnhancedMetricsConfig }).(GraphQLApiEnhancedMetricsConfigPtrOutput) +} + // Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). func (o GraphQLApiOutput) IntrospectionConfig() pulumi.StringPtrOutput { return o.ApplyT(func(v *GraphQLApi) pulumi.StringPtrOutput { return v.IntrospectionConfig }).(pulumi.StringPtrOutput) @@ -360,6 +385,8 @@ func (o GraphQLApiOutput) LogConfig() GraphQLApiLogConfigPtrOutput { } // User-supplied name for the GraphSQL API. +// +// The following arguments are optional: func (o GraphQLApiOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v *GraphQLApi) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) } diff --git a/sdk/go/aws/appsync/pulumiTypes.go b/sdk/go/aws/appsync/pulumiTypes.go index 2da54c4d485..a43ab568e8a 100644 --- a/sdk/go/aws/appsync/pulumiTypes.go +++ b/sdk/go/aws/appsync/pulumiTypes.go @@ -2978,6 +2978,181 @@ func (o GraphQLApiAdditionalAuthenticationProviderUserPoolConfigPtrOutput) UserP }).(pulumi.StringPtrOutput) } +type GraphQLApiEnhancedMetricsConfig struct { + // How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + DataSourceLevelMetricsBehavior string `pulumi:"dataSourceLevelMetricsBehavior"` + // How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + OperationLevelMetricsConfig string `pulumi:"operationLevelMetricsConfig"` + // How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + ResolverLevelMetricsBehavior string `pulumi:"resolverLevelMetricsBehavior"` +} + +// GraphQLApiEnhancedMetricsConfigInput is an input type that accepts GraphQLApiEnhancedMetricsConfigArgs and GraphQLApiEnhancedMetricsConfigOutput values. +// You can construct a concrete instance of `GraphQLApiEnhancedMetricsConfigInput` via: +// +// GraphQLApiEnhancedMetricsConfigArgs{...} +type GraphQLApiEnhancedMetricsConfigInput interface { + pulumi.Input + + ToGraphQLApiEnhancedMetricsConfigOutput() GraphQLApiEnhancedMetricsConfigOutput + ToGraphQLApiEnhancedMetricsConfigOutputWithContext(context.Context) GraphQLApiEnhancedMetricsConfigOutput +} + +type GraphQLApiEnhancedMetricsConfigArgs struct { + // How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + DataSourceLevelMetricsBehavior pulumi.StringInput `pulumi:"dataSourceLevelMetricsBehavior"` + // How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + OperationLevelMetricsConfig pulumi.StringInput `pulumi:"operationLevelMetricsConfig"` + // How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + ResolverLevelMetricsBehavior pulumi.StringInput `pulumi:"resolverLevelMetricsBehavior"` +} + +func (GraphQLApiEnhancedMetricsConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GraphQLApiEnhancedMetricsConfig)(nil)).Elem() +} + +func (i GraphQLApiEnhancedMetricsConfigArgs) ToGraphQLApiEnhancedMetricsConfigOutput() GraphQLApiEnhancedMetricsConfigOutput { + return i.ToGraphQLApiEnhancedMetricsConfigOutputWithContext(context.Background()) +} + +func (i GraphQLApiEnhancedMetricsConfigArgs) ToGraphQLApiEnhancedMetricsConfigOutputWithContext(ctx context.Context) GraphQLApiEnhancedMetricsConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(GraphQLApiEnhancedMetricsConfigOutput) +} + +func (i GraphQLApiEnhancedMetricsConfigArgs) ToGraphQLApiEnhancedMetricsConfigPtrOutput() GraphQLApiEnhancedMetricsConfigPtrOutput { + return i.ToGraphQLApiEnhancedMetricsConfigPtrOutputWithContext(context.Background()) +} + +func (i GraphQLApiEnhancedMetricsConfigArgs) ToGraphQLApiEnhancedMetricsConfigPtrOutputWithContext(ctx context.Context) GraphQLApiEnhancedMetricsConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GraphQLApiEnhancedMetricsConfigOutput).ToGraphQLApiEnhancedMetricsConfigPtrOutputWithContext(ctx) +} + +// GraphQLApiEnhancedMetricsConfigPtrInput is an input type that accepts GraphQLApiEnhancedMetricsConfigArgs, GraphQLApiEnhancedMetricsConfigPtr and GraphQLApiEnhancedMetricsConfigPtrOutput values. +// You can construct a concrete instance of `GraphQLApiEnhancedMetricsConfigPtrInput` via: +// +// GraphQLApiEnhancedMetricsConfigArgs{...} +// +// or: +// +// nil +type GraphQLApiEnhancedMetricsConfigPtrInput interface { + pulumi.Input + + ToGraphQLApiEnhancedMetricsConfigPtrOutput() GraphQLApiEnhancedMetricsConfigPtrOutput + ToGraphQLApiEnhancedMetricsConfigPtrOutputWithContext(context.Context) GraphQLApiEnhancedMetricsConfigPtrOutput +} + +type graphQLApiEnhancedMetricsConfigPtrType GraphQLApiEnhancedMetricsConfigArgs + +func GraphQLApiEnhancedMetricsConfigPtr(v *GraphQLApiEnhancedMetricsConfigArgs) GraphQLApiEnhancedMetricsConfigPtrInput { + return (*graphQLApiEnhancedMetricsConfigPtrType)(v) +} + +func (*graphQLApiEnhancedMetricsConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**GraphQLApiEnhancedMetricsConfig)(nil)).Elem() +} + +func (i *graphQLApiEnhancedMetricsConfigPtrType) ToGraphQLApiEnhancedMetricsConfigPtrOutput() GraphQLApiEnhancedMetricsConfigPtrOutput { + return i.ToGraphQLApiEnhancedMetricsConfigPtrOutputWithContext(context.Background()) +} + +func (i *graphQLApiEnhancedMetricsConfigPtrType) ToGraphQLApiEnhancedMetricsConfigPtrOutputWithContext(ctx context.Context) GraphQLApiEnhancedMetricsConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GraphQLApiEnhancedMetricsConfigPtrOutput) +} + +type GraphQLApiEnhancedMetricsConfigOutput struct{ *pulumi.OutputState } + +func (GraphQLApiEnhancedMetricsConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GraphQLApiEnhancedMetricsConfig)(nil)).Elem() +} + +func (o GraphQLApiEnhancedMetricsConfigOutput) ToGraphQLApiEnhancedMetricsConfigOutput() GraphQLApiEnhancedMetricsConfigOutput { + return o +} + +func (o GraphQLApiEnhancedMetricsConfigOutput) ToGraphQLApiEnhancedMetricsConfigOutputWithContext(ctx context.Context) GraphQLApiEnhancedMetricsConfigOutput { + return o +} + +func (o GraphQLApiEnhancedMetricsConfigOutput) ToGraphQLApiEnhancedMetricsConfigPtrOutput() GraphQLApiEnhancedMetricsConfigPtrOutput { + return o.ToGraphQLApiEnhancedMetricsConfigPtrOutputWithContext(context.Background()) +} + +func (o GraphQLApiEnhancedMetricsConfigOutput) ToGraphQLApiEnhancedMetricsConfigPtrOutputWithContext(ctx context.Context) GraphQLApiEnhancedMetricsConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v GraphQLApiEnhancedMetricsConfig) *GraphQLApiEnhancedMetricsConfig { + return &v + }).(GraphQLApiEnhancedMetricsConfigPtrOutput) +} + +// How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` +func (o GraphQLApiEnhancedMetricsConfigOutput) DataSourceLevelMetricsBehavior() pulumi.StringOutput { + return o.ApplyT(func(v GraphQLApiEnhancedMetricsConfig) string { return v.DataSourceLevelMetricsBehavior }).(pulumi.StringOutput) +} + +// How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` +func (o GraphQLApiEnhancedMetricsConfigOutput) OperationLevelMetricsConfig() pulumi.StringOutput { + return o.ApplyT(func(v GraphQLApiEnhancedMetricsConfig) string { return v.OperationLevelMetricsConfig }).(pulumi.StringOutput) +} + +// How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` +func (o GraphQLApiEnhancedMetricsConfigOutput) ResolverLevelMetricsBehavior() pulumi.StringOutput { + return o.ApplyT(func(v GraphQLApiEnhancedMetricsConfig) string { return v.ResolverLevelMetricsBehavior }).(pulumi.StringOutput) +} + +type GraphQLApiEnhancedMetricsConfigPtrOutput struct{ *pulumi.OutputState } + +func (GraphQLApiEnhancedMetricsConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GraphQLApiEnhancedMetricsConfig)(nil)).Elem() +} + +func (o GraphQLApiEnhancedMetricsConfigPtrOutput) ToGraphQLApiEnhancedMetricsConfigPtrOutput() GraphQLApiEnhancedMetricsConfigPtrOutput { + return o +} + +func (o GraphQLApiEnhancedMetricsConfigPtrOutput) ToGraphQLApiEnhancedMetricsConfigPtrOutputWithContext(ctx context.Context) GraphQLApiEnhancedMetricsConfigPtrOutput { + return o +} + +func (o GraphQLApiEnhancedMetricsConfigPtrOutput) Elem() GraphQLApiEnhancedMetricsConfigOutput { + return o.ApplyT(func(v *GraphQLApiEnhancedMetricsConfig) GraphQLApiEnhancedMetricsConfig { + if v != nil { + return *v + } + var ret GraphQLApiEnhancedMetricsConfig + return ret + }).(GraphQLApiEnhancedMetricsConfigOutput) +} + +// How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` +func (o GraphQLApiEnhancedMetricsConfigPtrOutput) DataSourceLevelMetricsBehavior() pulumi.StringPtrOutput { + return o.ApplyT(func(v *GraphQLApiEnhancedMetricsConfig) *string { + if v == nil { + return nil + } + return &v.DataSourceLevelMetricsBehavior + }).(pulumi.StringPtrOutput) +} + +// How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` +func (o GraphQLApiEnhancedMetricsConfigPtrOutput) OperationLevelMetricsConfig() pulumi.StringPtrOutput { + return o.ApplyT(func(v *GraphQLApiEnhancedMetricsConfig) *string { + if v == nil { + return nil + } + return &v.OperationLevelMetricsConfig + }).(pulumi.StringPtrOutput) +} + +// How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` +func (o GraphQLApiEnhancedMetricsConfigPtrOutput) ResolverLevelMetricsBehavior() pulumi.StringPtrOutput { + return o.ApplyT(func(v *GraphQLApiEnhancedMetricsConfig) *string { + if v == nil { + return nil + } + return &v.ResolverLevelMetricsBehavior + }).(pulumi.StringPtrOutput) +} + type GraphQLApiLambdaAuthorizerConfig struct { // Number of seconds a response should be cached for. The default is 5 minutes (300 seconds). The Lambda function can override this by returning a `ttlOverride` key in its response. A value of 0 disables caching of responses. Minimum value of 0. Maximum value of 3600. AuthorizerResultTtlInSeconds *int `pulumi:"authorizerResultTtlInSeconds"` @@ -4516,6 +4691,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GraphQLApiAdditionalAuthenticationProviderOpenidConnectConfigPtrInput)(nil)).Elem(), GraphQLApiAdditionalAuthenticationProviderOpenidConnectConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GraphQLApiAdditionalAuthenticationProviderUserPoolConfigInput)(nil)).Elem(), GraphQLApiAdditionalAuthenticationProviderUserPoolConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GraphQLApiAdditionalAuthenticationProviderUserPoolConfigPtrInput)(nil)).Elem(), GraphQLApiAdditionalAuthenticationProviderUserPoolConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GraphQLApiEnhancedMetricsConfigInput)(nil)).Elem(), GraphQLApiEnhancedMetricsConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GraphQLApiEnhancedMetricsConfigPtrInput)(nil)).Elem(), GraphQLApiEnhancedMetricsConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GraphQLApiLambdaAuthorizerConfigInput)(nil)).Elem(), GraphQLApiLambdaAuthorizerConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GraphQLApiLambdaAuthorizerConfigPtrInput)(nil)).Elem(), GraphQLApiLambdaAuthorizerConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GraphQLApiLogConfigInput)(nil)).Elem(), GraphQLApiLogConfigArgs{}) @@ -4570,6 +4747,8 @@ func init() { pulumi.RegisterOutputType(GraphQLApiAdditionalAuthenticationProviderOpenidConnectConfigPtrOutput{}) pulumi.RegisterOutputType(GraphQLApiAdditionalAuthenticationProviderUserPoolConfigOutput{}) pulumi.RegisterOutputType(GraphQLApiAdditionalAuthenticationProviderUserPoolConfigPtrOutput{}) + pulumi.RegisterOutputType(GraphQLApiEnhancedMetricsConfigOutput{}) + pulumi.RegisterOutputType(GraphQLApiEnhancedMetricsConfigPtrOutput{}) pulumi.RegisterOutputType(GraphQLApiLambdaAuthorizerConfigOutput{}) pulumi.RegisterOutputType(GraphQLApiLambdaAuthorizerConfigPtrOutput{}) pulumi.RegisterOutputType(GraphQLApiLogConfigOutput{}) diff --git a/sdk/go/aws/chatbot/init.go b/sdk/go/aws/chatbot/init.go new file mode 100644 index 00000000000..c29f49b1495 --- /dev/null +++ b/sdk/go/aws/chatbot/init.go @@ -0,0 +1,51 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package chatbot + +import ( + "fmt" + + "github.com/blang/semver" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration": + r = &SlackChannelConfiguration{} + case "aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration": + r = &TeamsChannelConfiguration{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "aws", + "chatbot/slackChannelConfiguration", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "chatbot/teamsChannelConfiguration", + &module{version}, + ) +} diff --git a/sdk/go/aws/chatbot/pulumiTypes.go b/sdk/go/aws/chatbot/pulumiTypes.go new file mode 100644 index 00000000000..0ee5b055326 --- /dev/null +++ b/sdk/go/aws/chatbot/pulumiTypes.go @@ -0,0 +1,375 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package chatbot + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +type SlackChannelConfigurationTimeouts struct { + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + Create *string `pulumi:"create"` + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + Delete *string `pulumi:"delete"` + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + Update *string `pulumi:"update"` +} + +// SlackChannelConfigurationTimeoutsInput is an input type that accepts SlackChannelConfigurationTimeoutsArgs and SlackChannelConfigurationTimeoutsOutput values. +// You can construct a concrete instance of `SlackChannelConfigurationTimeoutsInput` via: +// +// SlackChannelConfigurationTimeoutsArgs{...} +type SlackChannelConfigurationTimeoutsInput interface { + pulumi.Input + + ToSlackChannelConfigurationTimeoutsOutput() SlackChannelConfigurationTimeoutsOutput + ToSlackChannelConfigurationTimeoutsOutputWithContext(context.Context) SlackChannelConfigurationTimeoutsOutput +} + +type SlackChannelConfigurationTimeoutsArgs struct { + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + Create pulumi.StringPtrInput `pulumi:"create"` + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + Delete pulumi.StringPtrInput `pulumi:"delete"` + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + Update pulumi.StringPtrInput `pulumi:"update"` +} + +func (SlackChannelConfigurationTimeoutsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SlackChannelConfigurationTimeouts)(nil)).Elem() +} + +func (i SlackChannelConfigurationTimeoutsArgs) ToSlackChannelConfigurationTimeoutsOutput() SlackChannelConfigurationTimeoutsOutput { + return i.ToSlackChannelConfigurationTimeoutsOutputWithContext(context.Background()) +} + +func (i SlackChannelConfigurationTimeoutsArgs) ToSlackChannelConfigurationTimeoutsOutputWithContext(ctx context.Context) SlackChannelConfigurationTimeoutsOutput { + return pulumi.ToOutputWithContext(ctx, i).(SlackChannelConfigurationTimeoutsOutput) +} + +func (i SlackChannelConfigurationTimeoutsArgs) ToSlackChannelConfigurationTimeoutsPtrOutput() SlackChannelConfigurationTimeoutsPtrOutput { + return i.ToSlackChannelConfigurationTimeoutsPtrOutputWithContext(context.Background()) +} + +func (i SlackChannelConfigurationTimeoutsArgs) ToSlackChannelConfigurationTimeoutsPtrOutputWithContext(ctx context.Context) SlackChannelConfigurationTimeoutsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(SlackChannelConfigurationTimeoutsOutput).ToSlackChannelConfigurationTimeoutsPtrOutputWithContext(ctx) +} + +// SlackChannelConfigurationTimeoutsPtrInput is an input type that accepts SlackChannelConfigurationTimeoutsArgs, SlackChannelConfigurationTimeoutsPtr and SlackChannelConfigurationTimeoutsPtrOutput values. +// You can construct a concrete instance of `SlackChannelConfigurationTimeoutsPtrInput` via: +// +// SlackChannelConfigurationTimeoutsArgs{...} +// +// or: +// +// nil +type SlackChannelConfigurationTimeoutsPtrInput interface { + pulumi.Input + + ToSlackChannelConfigurationTimeoutsPtrOutput() SlackChannelConfigurationTimeoutsPtrOutput + ToSlackChannelConfigurationTimeoutsPtrOutputWithContext(context.Context) SlackChannelConfigurationTimeoutsPtrOutput +} + +type slackChannelConfigurationTimeoutsPtrType SlackChannelConfigurationTimeoutsArgs + +func SlackChannelConfigurationTimeoutsPtr(v *SlackChannelConfigurationTimeoutsArgs) SlackChannelConfigurationTimeoutsPtrInput { + return (*slackChannelConfigurationTimeoutsPtrType)(v) +} + +func (*slackChannelConfigurationTimeoutsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**SlackChannelConfigurationTimeouts)(nil)).Elem() +} + +func (i *slackChannelConfigurationTimeoutsPtrType) ToSlackChannelConfigurationTimeoutsPtrOutput() SlackChannelConfigurationTimeoutsPtrOutput { + return i.ToSlackChannelConfigurationTimeoutsPtrOutputWithContext(context.Background()) +} + +func (i *slackChannelConfigurationTimeoutsPtrType) ToSlackChannelConfigurationTimeoutsPtrOutputWithContext(ctx context.Context) SlackChannelConfigurationTimeoutsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(SlackChannelConfigurationTimeoutsPtrOutput) +} + +type SlackChannelConfigurationTimeoutsOutput struct{ *pulumi.OutputState } + +func (SlackChannelConfigurationTimeoutsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SlackChannelConfigurationTimeouts)(nil)).Elem() +} + +func (o SlackChannelConfigurationTimeoutsOutput) ToSlackChannelConfigurationTimeoutsOutput() SlackChannelConfigurationTimeoutsOutput { + return o +} + +func (o SlackChannelConfigurationTimeoutsOutput) ToSlackChannelConfigurationTimeoutsOutputWithContext(ctx context.Context) SlackChannelConfigurationTimeoutsOutput { + return o +} + +func (o SlackChannelConfigurationTimeoutsOutput) ToSlackChannelConfigurationTimeoutsPtrOutput() SlackChannelConfigurationTimeoutsPtrOutput { + return o.ToSlackChannelConfigurationTimeoutsPtrOutputWithContext(context.Background()) +} + +func (o SlackChannelConfigurationTimeoutsOutput) ToSlackChannelConfigurationTimeoutsPtrOutputWithContext(ctx context.Context) SlackChannelConfigurationTimeoutsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v SlackChannelConfigurationTimeouts) *SlackChannelConfigurationTimeouts { + return &v + }).(SlackChannelConfigurationTimeoutsPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). +func (o SlackChannelConfigurationTimeoutsOutput) Create() pulumi.StringPtrOutput { + return o.ApplyT(func(v SlackChannelConfigurationTimeouts) *string { return v.Create }).(pulumi.StringPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. +func (o SlackChannelConfigurationTimeoutsOutput) Delete() pulumi.StringPtrOutput { + return o.ApplyT(func(v SlackChannelConfigurationTimeouts) *string { return v.Delete }).(pulumi.StringPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). +func (o SlackChannelConfigurationTimeoutsOutput) Update() pulumi.StringPtrOutput { + return o.ApplyT(func(v SlackChannelConfigurationTimeouts) *string { return v.Update }).(pulumi.StringPtrOutput) +} + +type SlackChannelConfigurationTimeoutsPtrOutput struct{ *pulumi.OutputState } + +func (SlackChannelConfigurationTimeoutsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SlackChannelConfigurationTimeouts)(nil)).Elem() +} + +func (o SlackChannelConfigurationTimeoutsPtrOutput) ToSlackChannelConfigurationTimeoutsPtrOutput() SlackChannelConfigurationTimeoutsPtrOutput { + return o +} + +func (o SlackChannelConfigurationTimeoutsPtrOutput) ToSlackChannelConfigurationTimeoutsPtrOutputWithContext(ctx context.Context) SlackChannelConfigurationTimeoutsPtrOutput { + return o +} + +func (o SlackChannelConfigurationTimeoutsPtrOutput) Elem() SlackChannelConfigurationTimeoutsOutput { + return o.ApplyT(func(v *SlackChannelConfigurationTimeouts) SlackChannelConfigurationTimeouts { + if v != nil { + return *v + } + var ret SlackChannelConfigurationTimeouts + return ret + }).(SlackChannelConfigurationTimeoutsOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). +func (o SlackChannelConfigurationTimeoutsPtrOutput) Create() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SlackChannelConfigurationTimeouts) *string { + if v == nil { + return nil + } + return v.Create + }).(pulumi.StringPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. +func (o SlackChannelConfigurationTimeoutsPtrOutput) Delete() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SlackChannelConfigurationTimeouts) *string { + if v == nil { + return nil + } + return v.Delete + }).(pulumi.StringPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). +func (o SlackChannelConfigurationTimeoutsPtrOutput) Update() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SlackChannelConfigurationTimeouts) *string { + if v == nil { + return nil + } + return v.Update + }).(pulumi.StringPtrOutput) +} + +type TeamsChannelConfigurationTimeouts struct { + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + Create *string `pulumi:"create"` + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + Delete *string `pulumi:"delete"` + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + Update *string `pulumi:"update"` +} + +// TeamsChannelConfigurationTimeoutsInput is an input type that accepts TeamsChannelConfigurationTimeoutsArgs and TeamsChannelConfigurationTimeoutsOutput values. +// You can construct a concrete instance of `TeamsChannelConfigurationTimeoutsInput` via: +// +// TeamsChannelConfigurationTimeoutsArgs{...} +type TeamsChannelConfigurationTimeoutsInput interface { + pulumi.Input + + ToTeamsChannelConfigurationTimeoutsOutput() TeamsChannelConfigurationTimeoutsOutput + ToTeamsChannelConfigurationTimeoutsOutputWithContext(context.Context) TeamsChannelConfigurationTimeoutsOutput +} + +type TeamsChannelConfigurationTimeoutsArgs struct { + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + Create pulumi.StringPtrInput `pulumi:"create"` + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + Delete pulumi.StringPtrInput `pulumi:"delete"` + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + Update pulumi.StringPtrInput `pulumi:"update"` +} + +func (TeamsChannelConfigurationTimeoutsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TeamsChannelConfigurationTimeouts)(nil)).Elem() +} + +func (i TeamsChannelConfigurationTimeoutsArgs) ToTeamsChannelConfigurationTimeoutsOutput() TeamsChannelConfigurationTimeoutsOutput { + return i.ToTeamsChannelConfigurationTimeoutsOutputWithContext(context.Background()) +} + +func (i TeamsChannelConfigurationTimeoutsArgs) ToTeamsChannelConfigurationTimeoutsOutputWithContext(ctx context.Context) TeamsChannelConfigurationTimeoutsOutput { + return pulumi.ToOutputWithContext(ctx, i).(TeamsChannelConfigurationTimeoutsOutput) +} + +func (i TeamsChannelConfigurationTimeoutsArgs) ToTeamsChannelConfigurationTimeoutsPtrOutput() TeamsChannelConfigurationTimeoutsPtrOutput { + return i.ToTeamsChannelConfigurationTimeoutsPtrOutputWithContext(context.Background()) +} + +func (i TeamsChannelConfigurationTimeoutsArgs) ToTeamsChannelConfigurationTimeoutsPtrOutputWithContext(ctx context.Context) TeamsChannelConfigurationTimeoutsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TeamsChannelConfigurationTimeoutsOutput).ToTeamsChannelConfigurationTimeoutsPtrOutputWithContext(ctx) +} + +// TeamsChannelConfigurationTimeoutsPtrInput is an input type that accepts TeamsChannelConfigurationTimeoutsArgs, TeamsChannelConfigurationTimeoutsPtr and TeamsChannelConfigurationTimeoutsPtrOutput values. +// You can construct a concrete instance of `TeamsChannelConfigurationTimeoutsPtrInput` via: +// +// TeamsChannelConfigurationTimeoutsArgs{...} +// +// or: +// +// nil +type TeamsChannelConfigurationTimeoutsPtrInput interface { + pulumi.Input + + ToTeamsChannelConfigurationTimeoutsPtrOutput() TeamsChannelConfigurationTimeoutsPtrOutput + ToTeamsChannelConfigurationTimeoutsPtrOutputWithContext(context.Context) TeamsChannelConfigurationTimeoutsPtrOutput +} + +type teamsChannelConfigurationTimeoutsPtrType TeamsChannelConfigurationTimeoutsArgs + +func TeamsChannelConfigurationTimeoutsPtr(v *TeamsChannelConfigurationTimeoutsArgs) TeamsChannelConfigurationTimeoutsPtrInput { + return (*teamsChannelConfigurationTimeoutsPtrType)(v) +} + +func (*teamsChannelConfigurationTimeoutsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TeamsChannelConfigurationTimeouts)(nil)).Elem() +} + +func (i *teamsChannelConfigurationTimeoutsPtrType) ToTeamsChannelConfigurationTimeoutsPtrOutput() TeamsChannelConfigurationTimeoutsPtrOutput { + return i.ToTeamsChannelConfigurationTimeoutsPtrOutputWithContext(context.Background()) +} + +func (i *teamsChannelConfigurationTimeoutsPtrType) ToTeamsChannelConfigurationTimeoutsPtrOutputWithContext(ctx context.Context) TeamsChannelConfigurationTimeoutsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TeamsChannelConfigurationTimeoutsPtrOutput) +} + +type TeamsChannelConfigurationTimeoutsOutput struct{ *pulumi.OutputState } + +func (TeamsChannelConfigurationTimeoutsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TeamsChannelConfigurationTimeouts)(nil)).Elem() +} + +func (o TeamsChannelConfigurationTimeoutsOutput) ToTeamsChannelConfigurationTimeoutsOutput() TeamsChannelConfigurationTimeoutsOutput { + return o +} + +func (o TeamsChannelConfigurationTimeoutsOutput) ToTeamsChannelConfigurationTimeoutsOutputWithContext(ctx context.Context) TeamsChannelConfigurationTimeoutsOutput { + return o +} + +func (o TeamsChannelConfigurationTimeoutsOutput) ToTeamsChannelConfigurationTimeoutsPtrOutput() TeamsChannelConfigurationTimeoutsPtrOutput { + return o.ToTeamsChannelConfigurationTimeoutsPtrOutputWithContext(context.Background()) +} + +func (o TeamsChannelConfigurationTimeoutsOutput) ToTeamsChannelConfigurationTimeoutsPtrOutputWithContext(ctx context.Context) TeamsChannelConfigurationTimeoutsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TeamsChannelConfigurationTimeouts) *TeamsChannelConfigurationTimeouts { + return &v + }).(TeamsChannelConfigurationTimeoutsPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). +func (o TeamsChannelConfigurationTimeoutsOutput) Create() pulumi.StringPtrOutput { + return o.ApplyT(func(v TeamsChannelConfigurationTimeouts) *string { return v.Create }).(pulumi.StringPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. +func (o TeamsChannelConfigurationTimeoutsOutput) Delete() pulumi.StringPtrOutput { + return o.ApplyT(func(v TeamsChannelConfigurationTimeouts) *string { return v.Delete }).(pulumi.StringPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). +func (o TeamsChannelConfigurationTimeoutsOutput) Update() pulumi.StringPtrOutput { + return o.ApplyT(func(v TeamsChannelConfigurationTimeouts) *string { return v.Update }).(pulumi.StringPtrOutput) +} + +type TeamsChannelConfigurationTimeoutsPtrOutput struct{ *pulumi.OutputState } + +func (TeamsChannelConfigurationTimeoutsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TeamsChannelConfigurationTimeouts)(nil)).Elem() +} + +func (o TeamsChannelConfigurationTimeoutsPtrOutput) ToTeamsChannelConfigurationTimeoutsPtrOutput() TeamsChannelConfigurationTimeoutsPtrOutput { + return o +} + +func (o TeamsChannelConfigurationTimeoutsPtrOutput) ToTeamsChannelConfigurationTimeoutsPtrOutputWithContext(ctx context.Context) TeamsChannelConfigurationTimeoutsPtrOutput { + return o +} + +func (o TeamsChannelConfigurationTimeoutsPtrOutput) Elem() TeamsChannelConfigurationTimeoutsOutput { + return o.ApplyT(func(v *TeamsChannelConfigurationTimeouts) TeamsChannelConfigurationTimeouts { + if v != nil { + return *v + } + var ret TeamsChannelConfigurationTimeouts + return ret + }).(TeamsChannelConfigurationTimeoutsOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). +func (o TeamsChannelConfigurationTimeoutsPtrOutput) Create() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TeamsChannelConfigurationTimeouts) *string { + if v == nil { + return nil + } + return v.Create + }).(pulumi.StringPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. +func (o TeamsChannelConfigurationTimeoutsPtrOutput) Delete() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TeamsChannelConfigurationTimeouts) *string { + if v == nil { + return nil + } + return v.Delete + }).(pulumi.StringPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). +func (o TeamsChannelConfigurationTimeoutsPtrOutput) Update() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TeamsChannelConfigurationTimeouts) *string { + if v == nil { + return nil + } + return v.Update + }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*SlackChannelConfigurationTimeoutsInput)(nil)).Elem(), SlackChannelConfigurationTimeoutsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SlackChannelConfigurationTimeoutsPtrInput)(nil)).Elem(), SlackChannelConfigurationTimeoutsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TeamsChannelConfigurationTimeoutsInput)(nil)).Elem(), TeamsChannelConfigurationTimeoutsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TeamsChannelConfigurationTimeoutsPtrInput)(nil)).Elem(), TeamsChannelConfigurationTimeoutsArgs{}) + pulumi.RegisterOutputType(SlackChannelConfigurationTimeoutsOutput{}) + pulumi.RegisterOutputType(SlackChannelConfigurationTimeoutsPtrOutput{}) + pulumi.RegisterOutputType(TeamsChannelConfigurationTimeoutsOutput{}) + pulumi.RegisterOutputType(TeamsChannelConfigurationTimeoutsPtrOutput{}) +} diff --git a/sdk/go/aws/chatbot/slackChannelConfiguration.go b/sdk/go/aws/chatbot/slackChannelConfiguration.go new file mode 100644 index 00000000000..6a5b289d21c --- /dev/null +++ b/sdk/go/aws/chatbot/slackChannelConfiguration.go @@ -0,0 +1,463 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package chatbot + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Resource for managing an AWS Chatbot Slack Channel Configuration. +// +// ## Example Usage +// +// ### Basic Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/chatbot" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := chatbot.NewSlackChannelConfiguration(ctx, "test", &chatbot.SlackChannelConfigurationArgs{ +// ConfigurationName: pulumi.String("min-slaka-kanal"), +// IamRoleArn: pulumi.Any(testAwsIamRole.Arn), +// SlackChannelId: pulumi.String("C07EZ1ABC23"), +// SlackTeamId: pulumi.String("T07EA123LEP"), +// Tags: pulumi.StringMap{ +// "Name": pulumi.String("min-slaka-kanal"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import Chatbot Slack Channel Configuration using the `chat_configuration_arn`. For example: +// +// ```sh +// $ pulumi import aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration example arn:aws:chatbot::012345678901:chat-configuration/slack-channel/min-slaka-kanal +// ``` +type SlackChannelConfiguration struct { + pulumi.CustomResourceState + + // ARN of the Slack channel configuration. + ChatConfigurationArn pulumi.StringOutput `pulumi:"chatConfigurationArn"` + // Name of the Slack channel configuration. + ConfigurationName pulumi.StringOutput `pulumi:"configurationName"` + // List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + GuardrailPolicyArns pulumi.StringArrayOutput `pulumi:"guardrailPolicyArns"` + // User-defined role that AWS Chatbot assumes. This is not the service-linked role. + IamRoleArn pulumi.StringOutput `pulumi:"iamRoleArn"` + // Logging levels include `ERROR`, `INFO`, or `NONE`. + LoggingLevel pulumi.StringOutput `pulumi:"loggingLevel"` + // ID of the Slack channel. For example, `C07EZ1ABC23`. + SlackChannelId pulumi.StringOutput `pulumi:"slackChannelId"` + // Name of the Slack channel. + SlackChannelName pulumi.StringOutput `pulumi:"slackChannelName"` + // ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + // + // The following arguments are optional: + SlackTeamId pulumi.StringOutput `pulumi:"slackTeamId"` + // Name of the Slack team. + SlackTeamName pulumi.StringOutput `pulumi:"slackTeamName"` + // ARNs of the SNS topics that deliver notifications to AWS Chatbot. + SnsTopicArns pulumi.StringArrayOutput `pulumi:"snsTopicArns"` + // Map of tags assigned to the resource. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + Timeouts SlackChannelConfigurationTimeoutsPtrOutput `pulumi:"timeouts"` + // Enables use of a user role requirement in your chat configuration. + UserAuthorizationRequired pulumi.BoolOutput `pulumi:"userAuthorizationRequired"` +} + +// NewSlackChannelConfiguration registers a new resource with the given unique name, arguments, and options. +func NewSlackChannelConfiguration(ctx *pulumi.Context, + name string, args *SlackChannelConfigurationArgs, opts ...pulumi.ResourceOption) (*SlackChannelConfiguration, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.ConfigurationName == nil { + return nil, errors.New("invalid value for required argument 'ConfigurationName'") + } + if args.IamRoleArn == nil { + return nil, errors.New("invalid value for required argument 'IamRoleArn'") + } + if args.SlackChannelId == nil { + return nil, errors.New("invalid value for required argument 'SlackChannelId'") + } + if args.SlackTeamId == nil { + return nil, errors.New("invalid value for required argument 'SlackTeamId'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource SlackChannelConfiguration + err := ctx.RegisterResource("aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetSlackChannelConfiguration gets an existing SlackChannelConfiguration resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetSlackChannelConfiguration(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *SlackChannelConfigurationState, opts ...pulumi.ResourceOption) (*SlackChannelConfiguration, error) { + var resource SlackChannelConfiguration + err := ctx.ReadResource("aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering SlackChannelConfiguration resources. +type slackChannelConfigurationState struct { + // ARN of the Slack channel configuration. + ChatConfigurationArn *string `pulumi:"chatConfigurationArn"` + // Name of the Slack channel configuration. + ConfigurationName *string `pulumi:"configurationName"` + // List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + GuardrailPolicyArns []string `pulumi:"guardrailPolicyArns"` + // User-defined role that AWS Chatbot assumes. This is not the service-linked role. + IamRoleArn *string `pulumi:"iamRoleArn"` + // Logging levels include `ERROR`, `INFO`, or `NONE`. + LoggingLevel *string `pulumi:"loggingLevel"` + // ID of the Slack channel. For example, `C07EZ1ABC23`. + SlackChannelId *string `pulumi:"slackChannelId"` + // Name of the Slack channel. + SlackChannelName *string `pulumi:"slackChannelName"` + // ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + // + // The following arguments are optional: + SlackTeamId *string `pulumi:"slackTeamId"` + // Name of the Slack team. + SlackTeamName *string `pulumi:"slackTeamName"` + // ARNs of the SNS topics that deliver notifications to AWS Chatbot. + SnsTopicArns []string `pulumi:"snsTopicArns"` + // Map of tags assigned to the resource. + Tags map[string]string `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + Timeouts *SlackChannelConfigurationTimeouts `pulumi:"timeouts"` + // Enables use of a user role requirement in your chat configuration. + UserAuthorizationRequired *bool `pulumi:"userAuthorizationRequired"` +} + +type SlackChannelConfigurationState struct { + // ARN of the Slack channel configuration. + ChatConfigurationArn pulumi.StringPtrInput + // Name of the Slack channel configuration. + ConfigurationName pulumi.StringPtrInput + // List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + GuardrailPolicyArns pulumi.StringArrayInput + // User-defined role that AWS Chatbot assumes. This is not the service-linked role. + IamRoleArn pulumi.StringPtrInput + // Logging levels include `ERROR`, `INFO`, or `NONE`. + LoggingLevel pulumi.StringPtrInput + // ID of the Slack channel. For example, `C07EZ1ABC23`. + SlackChannelId pulumi.StringPtrInput + // Name of the Slack channel. + SlackChannelName pulumi.StringPtrInput + // ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + // + // The following arguments are optional: + SlackTeamId pulumi.StringPtrInput + // Name of the Slack team. + SlackTeamName pulumi.StringPtrInput + // ARNs of the SNS topics that deliver notifications to AWS Chatbot. + SnsTopicArns pulumi.StringArrayInput + // Map of tags assigned to the resource. + Tags pulumi.StringMapInput + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + Timeouts SlackChannelConfigurationTimeoutsPtrInput + // Enables use of a user role requirement in your chat configuration. + UserAuthorizationRequired pulumi.BoolPtrInput +} + +func (SlackChannelConfigurationState) ElementType() reflect.Type { + return reflect.TypeOf((*slackChannelConfigurationState)(nil)).Elem() +} + +type slackChannelConfigurationArgs struct { + // Name of the Slack channel configuration. + ConfigurationName string `pulumi:"configurationName"` + // List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + GuardrailPolicyArns []string `pulumi:"guardrailPolicyArns"` + // User-defined role that AWS Chatbot assumes. This is not the service-linked role. + IamRoleArn string `pulumi:"iamRoleArn"` + // Logging levels include `ERROR`, `INFO`, or `NONE`. + LoggingLevel *string `pulumi:"loggingLevel"` + // ID of the Slack channel. For example, `C07EZ1ABC23`. + SlackChannelId string `pulumi:"slackChannelId"` + // ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + // + // The following arguments are optional: + SlackTeamId string `pulumi:"slackTeamId"` + // ARNs of the SNS topics that deliver notifications to AWS Chatbot. + SnsTopicArns []string `pulumi:"snsTopicArns"` + // Map of tags assigned to the resource. + Tags map[string]string `pulumi:"tags"` + Timeouts *SlackChannelConfigurationTimeouts `pulumi:"timeouts"` + // Enables use of a user role requirement in your chat configuration. + UserAuthorizationRequired *bool `pulumi:"userAuthorizationRequired"` +} + +// The set of arguments for constructing a SlackChannelConfiguration resource. +type SlackChannelConfigurationArgs struct { + // Name of the Slack channel configuration. + ConfigurationName pulumi.StringInput + // List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + GuardrailPolicyArns pulumi.StringArrayInput + // User-defined role that AWS Chatbot assumes. This is not the service-linked role. + IamRoleArn pulumi.StringInput + // Logging levels include `ERROR`, `INFO`, or `NONE`. + LoggingLevel pulumi.StringPtrInput + // ID of the Slack channel. For example, `C07EZ1ABC23`. + SlackChannelId pulumi.StringInput + // ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + // + // The following arguments are optional: + SlackTeamId pulumi.StringInput + // ARNs of the SNS topics that deliver notifications to AWS Chatbot. + SnsTopicArns pulumi.StringArrayInput + // Map of tags assigned to the resource. + Tags pulumi.StringMapInput + Timeouts SlackChannelConfigurationTimeoutsPtrInput + // Enables use of a user role requirement in your chat configuration. + UserAuthorizationRequired pulumi.BoolPtrInput +} + +func (SlackChannelConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*slackChannelConfigurationArgs)(nil)).Elem() +} + +type SlackChannelConfigurationInput interface { + pulumi.Input + + ToSlackChannelConfigurationOutput() SlackChannelConfigurationOutput + ToSlackChannelConfigurationOutputWithContext(ctx context.Context) SlackChannelConfigurationOutput +} + +func (*SlackChannelConfiguration) ElementType() reflect.Type { + return reflect.TypeOf((**SlackChannelConfiguration)(nil)).Elem() +} + +func (i *SlackChannelConfiguration) ToSlackChannelConfigurationOutput() SlackChannelConfigurationOutput { + return i.ToSlackChannelConfigurationOutputWithContext(context.Background()) +} + +func (i *SlackChannelConfiguration) ToSlackChannelConfigurationOutputWithContext(ctx context.Context) SlackChannelConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(SlackChannelConfigurationOutput) +} + +// SlackChannelConfigurationArrayInput is an input type that accepts SlackChannelConfigurationArray and SlackChannelConfigurationArrayOutput values. +// You can construct a concrete instance of `SlackChannelConfigurationArrayInput` via: +// +// SlackChannelConfigurationArray{ SlackChannelConfigurationArgs{...} } +type SlackChannelConfigurationArrayInput interface { + pulumi.Input + + ToSlackChannelConfigurationArrayOutput() SlackChannelConfigurationArrayOutput + ToSlackChannelConfigurationArrayOutputWithContext(context.Context) SlackChannelConfigurationArrayOutput +} + +type SlackChannelConfigurationArray []SlackChannelConfigurationInput + +func (SlackChannelConfigurationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SlackChannelConfiguration)(nil)).Elem() +} + +func (i SlackChannelConfigurationArray) ToSlackChannelConfigurationArrayOutput() SlackChannelConfigurationArrayOutput { + return i.ToSlackChannelConfigurationArrayOutputWithContext(context.Background()) +} + +func (i SlackChannelConfigurationArray) ToSlackChannelConfigurationArrayOutputWithContext(ctx context.Context) SlackChannelConfigurationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SlackChannelConfigurationArrayOutput) +} + +// SlackChannelConfigurationMapInput is an input type that accepts SlackChannelConfigurationMap and SlackChannelConfigurationMapOutput values. +// You can construct a concrete instance of `SlackChannelConfigurationMapInput` via: +// +// SlackChannelConfigurationMap{ "key": SlackChannelConfigurationArgs{...} } +type SlackChannelConfigurationMapInput interface { + pulumi.Input + + ToSlackChannelConfigurationMapOutput() SlackChannelConfigurationMapOutput + ToSlackChannelConfigurationMapOutputWithContext(context.Context) SlackChannelConfigurationMapOutput +} + +type SlackChannelConfigurationMap map[string]SlackChannelConfigurationInput + +func (SlackChannelConfigurationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SlackChannelConfiguration)(nil)).Elem() +} + +func (i SlackChannelConfigurationMap) ToSlackChannelConfigurationMapOutput() SlackChannelConfigurationMapOutput { + return i.ToSlackChannelConfigurationMapOutputWithContext(context.Background()) +} + +func (i SlackChannelConfigurationMap) ToSlackChannelConfigurationMapOutputWithContext(ctx context.Context) SlackChannelConfigurationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(SlackChannelConfigurationMapOutput) +} + +type SlackChannelConfigurationOutput struct{ *pulumi.OutputState } + +func (SlackChannelConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SlackChannelConfiguration)(nil)).Elem() +} + +func (o SlackChannelConfigurationOutput) ToSlackChannelConfigurationOutput() SlackChannelConfigurationOutput { + return o +} + +func (o SlackChannelConfigurationOutput) ToSlackChannelConfigurationOutputWithContext(ctx context.Context) SlackChannelConfigurationOutput { + return o +} + +// ARN of the Slack channel configuration. +func (o SlackChannelConfigurationOutput) ChatConfigurationArn() pulumi.StringOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) pulumi.StringOutput { return v.ChatConfigurationArn }).(pulumi.StringOutput) +} + +// Name of the Slack channel configuration. +func (o SlackChannelConfigurationOutput) ConfigurationName() pulumi.StringOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) pulumi.StringOutput { return v.ConfigurationName }).(pulumi.StringOutput) +} + +// List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. +func (o SlackChannelConfigurationOutput) GuardrailPolicyArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) pulumi.StringArrayOutput { return v.GuardrailPolicyArns }).(pulumi.StringArrayOutput) +} + +// User-defined role that AWS Chatbot assumes. This is not the service-linked role. +func (o SlackChannelConfigurationOutput) IamRoleArn() pulumi.StringOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) pulumi.StringOutput { return v.IamRoleArn }).(pulumi.StringOutput) +} + +// Logging levels include `ERROR`, `INFO`, or `NONE`. +func (o SlackChannelConfigurationOutput) LoggingLevel() pulumi.StringOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) pulumi.StringOutput { return v.LoggingLevel }).(pulumi.StringOutput) +} + +// ID of the Slack channel. For example, `C07EZ1ABC23`. +func (o SlackChannelConfigurationOutput) SlackChannelId() pulumi.StringOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) pulumi.StringOutput { return v.SlackChannelId }).(pulumi.StringOutput) +} + +// Name of the Slack channel. +func (o SlackChannelConfigurationOutput) SlackChannelName() pulumi.StringOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) pulumi.StringOutput { return v.SlackChannelName }).(pulumi.StringOutput) +} + +// ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. +// +// The following arguments are optional: +func (o SlackChannelConfigurationOutput) SlackTeamId() pulumi.StringOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) pulumi.StringOutput { return v.SlackTeamId }).(pulumi.StringOutput) +} + +// Name of the Slack team. +func (o SlackChannelConfigurationOutput) SlackTeamName() pulumi.StringOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) pulumi.StringOutput { return v.SlackTeamName }).(pulumi.StringOutput) +} + +// ARNs of the SNS topics that deliver notifications to AWS Chatbot. +func (o SlackChannelConfigurationOutput) SnsTopicArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) pulumi.StringArrayOutput { return v.SnsTopicArns }).(pulumi.StringArrayOutput) +} + +// Map of tags assigned to the resource. +func (o SlackChannelConfigurationOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o SlackChannelConfigurationOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +func (o SlackChannelConfigurationOutput) Timeouts() SlackChannelConfigurationTimeoutsPtrOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) SlackChannelConfigurationTimeoutsPtrOutput { return v.Timeouts }).(SlackChannelConfigurationTimeoutsPtrOutput) +} + +// Enables use of a user role requirement in your chat configuration. +func (o SlackChannelConfigurationOutput) UserAuthorizationRequired() pulumi.BoolOutput { + return o.ApplyT(func(v *SlackChannelConfiguration) pulumi.BoolOutput { return v.UserAuthorizationRequired }).(pulumi.BoolOutput) +} + +type SlackChannelConfigurationArrayOutput struct{ *pulumi.OutputState } + +func (SlackChannelConfigurationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SlackChannelConfiguration)(nil)).Elem() +} + +func (o SlackChannelConfigurationArrayOutput) ToSlackChannelConfigurationArrayOutput() SlackChannelConfigurationArrayOutput { + return o +} + +func (o SlackChannelConfigurationArrayOutput) ToSlackChannelConfigurationArrayOutputWithContext(ctx context.Context) SlackChannelConfigurationArrayOutput { + return o +} + +func (o SlackChannelConfigurationArrayOutput) Index(i pulumi.IntInput) SlackChannelConfigurationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *SlackChannelConfiguration { + return vs[0].([]*SlackChannelConfiguration)[vs[1].(int)] + }).(SlackChannelConfigurationOutput) +} + +type SlackChannelConfigurationMapOutput struct{ *pulumi.OutputState } + +func (SlackChannelConfigurationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SlackChannelConfiguration)(nil)).Elem() +} + +func (o SlackChannelConfigurationMapOutput) ToSlackChannelConfigurationMapOutput() SlackChannelConfigurationMapOutput { + return o +} + +func (o SlackChannelConfigurationMapOutput) ToSlackChannelConfigurationMapOutputWithContext(ctx context.Context) SlackChannelConfigurationMapOutput { + return o +} + +func (o SlackChannelConfigurationMapOutput) MapIndex(k pulumi.StringInput) SlackChannelConfigurationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *SlackChannelConfiguration { + return vs[0].(map[string]*SlackChannelConfiguration)[vs[1].(string)] + }).(SlackChannelConfigurationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*SlackChannelConfigurationInput)(nil)).Elem(), &SlackChannelConfiguration{}) + pulumi.RegisterInputType(reflect.TypeOf((*SlackChannelConfigurationArrayInput)(nil)).Elem(), SlackChannelConfigurationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SlackChannelConfigurationMapInput)(nil)).Elem(), SlackChannelConfigurationMap{}) + pulumi.RegisterOutputType(SlackChannelConfigurationOutput{}) + pulumi.RegisterOutputType(SlackChannelConfigurationArrayOutput{}) + pulumi.RegisterOutputType(SlackChannelConfigurationMapOutput{}) +} diff --git a/sdk/go/aws/chatbot/teamsChannelConfiguration.go b/sdk/go/aws/chatbot/teamsChannelConfiguration.go new file mode 100644 index 00000000000..d60fb7c8fe6 --- /dev/null +++ b/sdk/go/aws/chatbot/teamsChannelConfiguration.go @@ -0,0 +1,492 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package chatbot + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Resource for managing an AWS Chatbot Microsoft Teams Channel Configuration. +// +// > **NOTE:** We provide this resource on a best-effort basis. If you are able to test it and find it useful, we welcome your input at GitHub. +// +// ## Example Usage +// +// ### Basic Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/chatbot" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := chatbot.NewTeamsChannelConfiguration(ctx, "test", &chatbot.TeamsChannelConfigurationArgs{ +// ChannelId: pulumi.String("C07EZ1ABC23"), +// ConfigurationName: pulumi.String("mitt-lags-kanal"), +// IamRoleArn: pulumi.Any(testAwsIamRole.Arn), +// TeamId: pulumi.String("74361522-da01-538d-aa2e-ac7918c6bb92"), +// TenantId: pulumi.String("1234"), +// Tags: pulumi.StringMap{ +// "Name": pulumi.String("mitt-lags-kanal"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import Chatbot Microsoft Teams Channel Configuration using the `team_id`. For example: +// +// ```sh +// $ pulumi import aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration example 5f4f15d2-b958-522a-8333-124aa8bf0925 +// ``` +type TeamsChannelConfiguration struct { + pulumi.CustomResourceState + + // ID of the Microsoft Teams channel. + ChannelId pulumi.StringOutput `pulumi:"channelId"` + // Name of the Microsoft Teams channel. + ChannelName pulumi.StringOutput `pulumi:"channelName"` + // ARN of the Microsoft Teams channel configuration. + ChatConfigurationArn pulumi.StringOutput `pulumi:"chatConfigurationArn"` + // Name of the Microsoft Teams channel configuration. + ConfigurationName pulumi.StringOutput `pulumi:"configurationName"` + // List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + GuardrailPolicyArns pulumi.StringArrayOutput `pulumi:"guardrailPolicyArns"` + // ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + IamRoleArn pulumi.StringOutput `pulumi:"iamRoleArn"` + // Logging levels include `ERROR`, `INFO`, or `NONE`. + LoggingLevel pulumi.StringOutput `pulumi:"loggingLevel"` + // ARNs of the SNS topics that deliver notifications to AWS Chatbot. + SnsTopicArns pulumi.StringArrayOutput `pulumi:"snsTopicArns"` + // Map of tags assigned to the resource. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + TeamId pulumi.StringOutput `pulumi:"teamId"` + // Name of the Microsoft Teams team. + TeamName pulumi.StringOutput `pulumi:"teamName"` + // ID of the Microsoft Teams tenant. + // + // The following arguments are optional: + TenantId pulumi.StringOutput `pulumi:"tenantId"` + Timeouts TeamsChannelConfigurationTimeoutsPtrOutput `pulumi:"timeouts"` + // Enables use of a user role requirement in your chat configuration. + UserAuthorizationRequired pulumi.BoolOutput `pulumi:"userAuthorizationRequired"` +} + +// NewTeamsChannelConfiguration registers a new resource with the given unique name, arguments, and options. +func NewTeamsChannelConfiguration(ctx *pulumi.Context, + name string, args *TeamsChannelConfigurationArgs, opts ...pulumi.ResourceOption) (*TeamsChannelConfiguration, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.ChannelId == nil { + return nil, errors.New("invalid value for required argument 'ChannelId'") + } + if args.ConfigurationName == nil { + return nil, errors.New("invalid value for required argument 'ConfigurationName'") + } + if args.IamRoleArn == nil { + return nil, errors.New("invalid value for required argument 'IamRoleArn'") + } + if args.TeamId == nil { + return nil, errors.New("invalid value for required argument 'TeamId'") + } + if args.TenantId == nil { + return nil, errors.New("invalid value for required argument 'TenantId'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource TeamsChannelConfiguration + err := ctx.RegisterResource("aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetTeamsChannelConfiguration gets an existing TeamsChannelConfiguration resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetTeamsChannelConfiguration(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *TeamsChannelConfigurationState, opts ...pulumi.ResourceOption) (*TeamsChannelConfiguration, error) { + var resource TeamsChannelConfiguration + err := ctx.ReadResource("aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering TeamsChannelConfiguration resources. +type teamsChannelConfigurationState struct { + // ID of the Microsoft Teams channel. + ChannelId *string `pulumi:"channelId"` + // Name of the Microsoft Teams channel. + ChannelName *string `pulumi:"channelName"` + // ARN of the Microsoft Teams channel configuration. + ChatConfigurationArn *string `pulumi:"chatConfigurationArn"` + // Name of the Microsoft Teams channel configuration. + ConfigurationName *string `pulumi:"configurationName"` + // List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + GuardrailPolicyArns []string `pulumi:"guardrailPolicyArns"` + // ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + IamRoleArn *string `pulumi:"iamRoleArn"` + // Logging levels include `ERROR`, `INFO`, or `NONE`. + LoggingLevel *string `pulumi:"loggingLevel"` + // ARNs of the SNS topics that deliver notifications to AWS Chatbot. + SnsTopicArns []string `pulumi:"snsTopicArns"` + // Map of tags assigned to the resource. + Tags map[string]string `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + TeamId *string `pulumi:"teamId"` + // Name of the Microsoft Teams team. + TeamName *string `pulumi:"teamName"` + // ID of the Microsoft Teams tenant. + // + // The following arguments are optional: + TenantId *string `pulumi:"tenantId"` + Timeouts *TeamsChannelConfigurationTimeouts `pulumi:"timeouts"` + // Enables use of a user role requirement in your chat configuration. + UserAuthorizationRequired *bool `pulumi:"userAuthorizationRequired"` +} + +type TeamsChannelConfigurationState struct { + // ID of the Microsoft Teams channel. + ChannelId pulumi.StringPtrInput + // Name of the Microsoft Teams channel. + ChannelName pulumi.StringPtrInput + // ARN of the Microsoft Teams channel configuration. + ChatConfigurationArn pulumi.StringPtrInput + // Name of the Microsoft Teams channel configuration. + ConfigurationName pulumi.StringPtrInput + // List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + GuardrailPolicyArns pulumi.StringArrayInput + // ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + IamRoleArn pulumi.StringPtrInput + // Logging levels include `ERROR`, `INFO`, or `NONE`. + LoggingLevel pulumi.StringPtrInput + // ARNs of the SNS topics that deliver notifications to AWS Chatbot. + SnsTopicArns pulumi.StringArrayInput + // Map of tags assigned to the resource. + Tags pulumi.StringMapInput + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + TeamId pulumi.StringPtrInput + // Name of the Microsoft Teams team. + TeamName pulumi.StringPtrInput + // ID of the Microsoft Teams tenant. + // + // The following arguments are optional: + TenantId pulumi.StringPtrInput + Timeouts TeamsChannelConfigurationTimeoutsPtrInput + // Enables use of a user role requirement in your chat configuration. + UserAuthorizationRequired pulumi.BoolPtrInput +} + +func (TeamsChannelConfigurationState) ElementType() reflect.Type { + return reflect.TypeOf((*teamsChannelConfigurationState)(nil)).Elem() +} + +type teamsChannelConfigurationArgs struct { + // ID of the Microsoft Teams channel. + ChannelId string `pulumi:"channelId"` + // Name of the Microsoft Teams channel. + ChannelName *string `pulumi:"channelName"` + // Name of the Microsoft Teams channel configuration. + ConfigurationName string `pulumi:"configurationName"` + // List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + GuardrailPolicyArns []string `pulumi:"guardrailPolicyArns"` + // ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + IamRoleArn string `pulumi:"iamRoleArn"` + // Logging levels include `ERROR`, `INFO`, or `NONE`. + LoggingLevel *string `pulumi:"loggingLevel"` + // ARNs of the SNS topics that deliver notifications to AWS Chatbot. + SnsTopicArns []string `pulumi:"snsTopicArns"` + // Map of tags assigned to the resource. + Tags map[string]string `pulumi:"tags"` + // ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + TeamId string `pulumi:"teamId"` + // Name of the Microsoft Teams team. + TeamName *string `pulumi:"teamName"` + // ID of the Microsoft Teams tenant. + // + // The following arguments are optional: + TenantId string `pulumi:"tenantId"` + Timeouts *TeamsChannelConfigurationTimeouts `pulumi:"timeouts"` + // Enables use of a user role requirement in your chat configuration. + UserAuthorizationRequired *bool `pulumi:"userAuthorizationRequired"` +} + +// The set of arguments for constructing a TeamsChannelConfiguration resource. +type TeamsChannelConfigurationArgs struct { + // ID of the Microsoft Teams channel. + ChannelId pulumi.StringInput + // Name of the Microsoft Teams channel. + ChannelName pulumi.StringPtrInput + // Name of the Microsoft Teams channel configuration. + ConfigurationName pulumi.StringInput + // List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + GuardrailPolicyArns pulumi.StringArrayInput + // ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + IamRoleArn pulumi.StringInput + // Logging levels include `ERROR`, `INFO`, or `NONE`. + LoggingLevel pulumi.StringPtrInput + // ARNs of the SNS topics that deliver notifications to AWS Chatbot. + SnsTopicArns pulumi.StringArrayInput + // Map of tags assigned to the resource. + Tags pulumi.StringMapInput + // ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + TeamId pulumi.StringInput + // Name of the Microsoft Teams team. + TeamName pulumi.StringPtrInput + // ID of the Microsoft Teams tenant. + // + // The following arguments are optional: + TenantId pulumi.StringInput + Timeouts TeamsChannelConfigurationTimeoutsPtrInput + // Enables use of a user role requirement in your chat configuration. + UserAuthorizationRequired pulumi.BoolPtrInput +} + +func (TeamsChannelConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*teamsChannelConfigurationArgs)(nil)).Elem() +} + +type TeamsChannelConfigurationInput interface { + pulumi.Input + + ToTeamsChannelConfigurationOutput() TeamsChannelConfigurationOutput + ToTeamsChannelConfigurationOutputWithContext(ctx context.Context) TeamsChannelConfigurationOutput +} + +func (*TeamsChannelConfiguration) ElementType() reflect.Type { + return reflect.TypeOf((**TeamsChannelConfiguration)(nil)).Elem() +} + +func (i *TeamsChannelConfiguration) ToTeamsChannelConfigurationOutput() TeamsChannelConfigurationOutput { + return i.ToTeamsChannelConfigurationOutputWithContext(context.Background()) +} + +func (i *TeamsChannelConfiguration) ToTeamsChannelConfigurationOutputWithContext(ctx context.Context) TeamsChannelConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(TeamsChannelConfigurationOutput) +} + +// TeamsChannelConfigurationArrayInput is an input type that accepts TeamsChannelConfigurationArray and TeamsChannelConfigurationArrayOutput values. +// You can construct a concrete instance of `TeamsChannelConfigurationArrayInput` via: +// +// TeamsChannelConfigurationArray{ TeamsChannelConfigurationArgs{...} } +type TeamsChannelConfigurationArrayInput interface { + pulumi.Input + + ToTeamsChannelConfigurationArrayOutput() TeamsChannelConfigurationArrayOutput + ToTeamsChannelConfigurationArrayOutputWithContext(context.Context) TeamsChannelConfigurationArrayOutput +} + +type TeamsChannelConfigurationArray []TeamsChannelConfigurationInput + +func (TeamsChannelConfigurationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*TeamsChannelConfiguration)(nil)).Elem() +} + +func (i TeamsChannelConfigurationArray) ToTeamsChannelConfigurationArrayOutput() TeamsChannelConfigurationArrayOutput { + return i.ToTeamsChannelConfigurationArrayOutputWithContext(context.Background()) +} + +func (i TeamsChannelConfigurationArray) ToTeamsChannelConfigurationArrayOutputWithContext(ctx context.Context) TeamsChannelConfigurationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TeamsChannelConfigurationArrayOutput) +} + +// TeamsChannelConfigurationMapInput is an input type that accepts TeamsChannelConfigurationMap and TeamsChannelConfigurationMapOutput values. +// You can construct a concrete instance of `TeamsChannelConfigurationMapInput` via: +// +// TeamsChannelConfigurationMap{ "key": TeamsChannelConfigurationArgs{...} } +type TeamsChannelConfigurationMapInput interface { + pulumi.Input + + ToTeamsChannelConfigurationMapOutput() TeamsChannelConfigurationMapOutput + ToTeamsChannelConfigurationMapOutputWithContext(context.Context) TeamsChannelConfigurationMapOutput +} + +type TeamsChannelConfigurationMap map[string]TeamsChannelConfigurationInput + +func (TeamsChannelConfigurationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*TeamsChannelConfiguration)(nil)).Elem() +} + +func (i TeamsChannelConfigurationMap) ToTeamsChannelConfigurationMapOutput() TeamsChannelConfigurationMapOutput { + return i.ToTeamsChannelConfigurationMapOutputWithContext(context.Background()) +} + +func (i TeamsChannelConfigurationMap) ToTeamsChannelConfigurationMapOutputWithContext(ctx context.Context) TeamsChannelConfigurationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(TeamsChannelConfigurationMapOutput) +} + +type TeamsChannelConfigurationOutput struct{ *pulumi.OutputState } + +func (TeamsChannelConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TeamsChannelConfiguration)(nil)).Elem() +} + +func (o TeamsChannelConfigurationOutput) ToTeamsChannelConfigurationOutput() TeamsChannelConfigurationOutput { + return o +} + +func (o TeamsChannelConfigurationOutput) ToTeamsChannelConfigurationOutputWithContext(ctx context.Context) TeamsChannelConfigurationOutput { + return o +} + +// ID of the Microsoft Teams channel. +func (o TeamsChannelConfigurationOutput) ChannelId() pulumi.StringOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.StringOutput { return v.ChannelId }).(pulumi.StringOutput) +} + +// Name of the Microsoft Teams channel. +func (o TeamsChannelConfigurationOutput) ChannelName() pulumi.StringOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.StringOutput { return v.ChannelName }).(pulumi.StringOutput) +} + +// ARN of the Microsoft Teams channel configuration. +func (o TeamsChannelConfigurationOutput) ChatConfigurationArn() pulumi.StringOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.StringOutput { return v.ChatConfigurationArn }).(pulumi.StringOutput) +} + +// Name of the Microsoft Teams channel configuration. +func (o TeamsChannelConfigurationOutput) ConfigurationName() pulumi.StringOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.StringOutput { return v.ConfigurationName }).(pulumi.StringOutput) +} + +// List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. +func (o TeamsChannelConfigurationOutput) GuardrailPolicyArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.StringArrayOutput { return v.GuardrailPolicyArns }).(pulumi.StringArrayOutput) +} + +// ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. +func (o TeamsChannelConfigurationOutput) IamRoleArn() pulumi.StringOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.StringOutput { return v.IamRoleArn }).(pulumi.StringOutput) +} + +// Logging levels include `ERROR`, `INFO`, or `NONE`. +func (o TeamsChannelConfigurationOutput) LoggingLevel() pulumi.StringOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.StringOutput { return v.LoggingLevel }).(pulumi.StringOutput) +} + +// ARNs of the SNS topics that deliver notifications to AWS Chatbot. +func (o TeamsChannelConfigurationOutput) SnsTopicArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.StringArrayOutput { return v.SnsTopicArns }).(pulumi.StringArrayOutput) +} + +// Map of tags assigned to the resource. +func (o TeamsChannelConfigurationOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o TeamsChannelConfigurationOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. +func (o TeamsChannelConfigurationOutput) TeamId() pulumi.StringOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.StringOutput { return v.TeamId }).(pulumi.StringOutput) +} + +// Name of the Microsoft Teams team. +func (o TeamsChannelConfigurationOutput) TeamName() pulumi.StringOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.StringOutput { return v.TeamName }).(pulumi.StringOutput) +} + +// ID of the Microsoft Teams tenant. +// +// The following arguments are optional: +func (o TeamsChannelConfigurationOutput) TenantId() pulumi.StringOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.StringOutput { return v.TenantId }).(pulumi.StringOutput) +} + +func (o TeamsChannelConfigurationOutput) Timeouts() TeamsChannelConfigurationTimeoutsPtrOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) TeamsChannelConfigurationTimeoutsPtrOutput { return v.Timeouts }).(TeamsChannelConfigurationTimeoutsPtrOutput) +} + +// Enables use of a user role requirement in your chat configuration. +func (o TeamsChannelConfigurationOutput) UserAuthorizationRequired() pulumi.BoolOutput { + return o.ApplyT(func(v *TeamsChannelConfiguration) pulumi.BoolOutput { return v.UserAuthorizationRequired }).(pulumi.BoolOutput) +} + +type TeamsChannelConfigurationArrayOutput struct{ *pulumi.OutputState } + +func (TeamsChannelConfigurationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*TeamsChannelConfiguration)(nil)).Elem() +} + +func (o TeamsChannelConfigurationArrayOutput) ToTeamsChannelConfigurationArrayOutput() TeamsChannelConfigurationArrayOutput { + return o +} + +func (o TeamsChannelConfigurationArrayOutput) ToTeamsChannelConfigurationArrayOutputWithContext(ctx context.Context) TeamsChannelConfigurationArrayOutput { + return o +} + +func (o TeamsChannelConfigurationArrayOutput) Index(i pulumi.IntInput) TeamsChannelConfigurationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *TeamsChannelConfiguration { + return vs[0].([]*TeamsChannelConfiguration)[vs[1].(int)] + }).(TeamsChannelConfigurationOutput) +} + +type TeamsChannelConfigurationMapOutput struct{ *pulumi.OutputState } + +func (TeamsChannelConfigurationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*TeamsChannelConfiguration)(nil)).Elem() +} + +func (o TeamsChannelConfigurationMapOutput) ToTeamsChannelConfigurationMapOutput() TeamsChannelConfigurationMapOutput { + return o +} + +func (o TeamsChannelConfigurationMapOutput) ToTeamsChannelConfigurationMapOutputWithContext(ctx context.Context) TeamsChannelConfigurationMapOutput { + return o +} + +func (o TeamsChannelConfigurationMapOutput) MapIndex(k pulumi.StringInput) TeamsChannelConfigurationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *TeamsChannelConfiguration { + return vs[0].(map[string]*TeamsChannelConfiguration)[vs[1].(string)] + }).(TeamsChannelConfigurationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*TeamsChannelConfigurationInput)(nil)).Elem(), &TeamsChannelConfiguration{}) + pulumi.RegisterInputType(reflect.TypeOf((*TeamsChannelConfigurationArrayInput)(nil)).Elem(), TeamsChannelConfigurationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TeamsChannelConfigurationMapInput)(nil)).Elem(), TeamsChannelConfigurationMap{}) + pulumi.RegisterOutputType(TeamsChannelConfigurationOutput{}) + pulumi.RegisterOutputType(TeamsChannelConfigurationArrayOutput{}) + pulumi.RegisterOutputType(TeamsChannelConfigurationMapOutput{}) +} diff --git a/sdk/go/aws/cloudsearch/pulumiTypes.go b/sdk/go/aws/cloudsearch/pulumiTypes.go index 992b6c71975..1f2c076c39a 100644 --- a/sdk/go/aws/cloudsearch/pulumiTypes.go +++ b/sdk/go/aws/cloudsearch/pulumiTypes.go @@ -178,7 +178,7 @@ type DomainIndexField struct { Facet *bool `pulumi:"facet"` // You can highlight information. Highlight *bool `pulumi:"highlight"` - // A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + // A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. Name string `pulumi:"name"` // You can enable returning the value of all searchable fields. Return *bool `pulumi:"return"` @@ -212,7 +212,7 @@ type DomainIndexFieldArgs struct { Facet pulumi.BoolPtrInput `pulumi:"facet"` // You can highlight information. Highlight pulumi.BoolPtrInput `pulumi:"highlight"` - // A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + // A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. Name pulumi.StringInput `pulumi:"name"` // You can enable returning the value of all searchable fields. Return pulumi.BoolPtrInput `pulumi:"return"` @@ -297,7 +297,7 @@ func (o DomainIndexFieldOutput) Highlight() pulumi.BoolPtrOutput { return o.ApplyT(func(v DomainIndexField) *bool { return v.Highlight }).(pulumi.BoolPtrOutput) } -// A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. +// A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. func (o DomainIndexFieldOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v DomainIndexField) string { return v.Name }).(pulumi.StringOutput) } diff --git a/sdk/go/aws/config/pulumiTypes.go b/sdk/go/aws/config/pulumiTypes.go index fa1f94abc92..54d2dcaccc2 100644 --- a/sdk/go/aws/config/pulumiTypes.go +++ b/sdk/go/aws/config/pulumiTypes.go @@ -737,6 +737,8 @@ type Endpoints struct { // Use this to override the default service endpoint URL Rekognition *string `pulumi:"rekognition"` // Use this to override the default service endpoint URL + Resiliencehub *string `pulumi:"resiliencehub"` + // Use this to override the default service endpoint URL Resourceexplorer2 *string `pulumi:"resourceexplorer2"` // Use this to override the default service endpoint URL Resourcegroups *string `pulumi:"resourcegroups"` @@ -1325,6 +1327,8 @@ type EndpointsArgs struct { // Use this to override the default service endpoint URL Rekognition pulumi.StringPtrInput `pulumi:"rekognition"` // Use this to override the default service endpoint URL + Resiliencehub pulumi.StringPtrInput `pulumi:"resiliencehub"` + // Use this to override the default service endpoint URL Resourceexplorer2 pulumi.StringPtrInput `pulumi:"resourceexplorer2"` // Use this to override the default service endpoint URL Resourcegroups pulumi.StringPtrInput `pulumi:"resourcegroups"` @@ -2620,6 +2624,11 @@ func (o EndpointsOutput) Rekognition() pulumi.StringPtrOutput { return o.ApplyT(func(v Endpoints) *string { return v.Rekognition }).(pulumi.StringPtrOutput) } +// Use this to override the default service endpoint URL +func (o EndpointsOutput) Resiliencehub() pulumi.StringPtrOutput { + return o.ApplyT(func(v Endpoints) *string { return v.Resiliencehub }).(pulumi.StringPtrOutput) +} + // Use this to override the default service endpoint URL func (o EndpointsOutput) Resourceexplorer2() pulumi.StringPtrOutput { return o.ApplyT(func(v Endpoints) *string { return v.Resourceexplorer2 }).(pulumi.StringPtrOutput) diff --git a/sdk/go/aws/datazone/glossary.go b/sdk/go/aws/datazone/glossary.go new file mode 100644 index 00000000000..f9685e5cf19 --- /dev/null +++ b/sdk/go/aws/datazone/glossary.go @@ -0,0 +1,446 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package datazone + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Resource for managing an AWS DataZone Glossary. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/datazone" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "Version": "2012-10-17", +// "Statement": []map[string]interface{}{ +// map[string]interface{}{ +// "Action": []string{ +// "sts:AssumeRole", +// "sts:TagSession", +// }, +// "Effect": "Allow", +// "Principal": map[string]interface{}{ +// "Service": "datazone.amazonaws.com", +// }, +// }, +// map[string]interface{}{ +// "Action": []string{ +// "sts:AssumeRole", +// "sts:TagSession", +// }, +// "Effect": "Allow", +// "Principal": map[string]interface{}{ +// "Service": "cloudformation.amazonaws.com", +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// tmpJSON1, err := json.Marshal(map[string]interface{}{ +// "Version": "2012-10-17", +// "Statement": []map[string]interface{}{ +// map[string]interface{}{ +// "Action": []string{ +// "datazone:*", +// "ram:*", +// "sso:*", +// "kms:*", +// }, +// "Effect": "Allow", +// "Resource": "*", +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json1 := string(tmpJSON1) +// domainExecutionRole, err := iam.NewRole(ctx, "domain_execution_role", &iam.RoleArgs{ +// Name: pulumi.String("example_name"), +// AssumeRolePolicy: pulumi.String(json0), +// InlinePolicies: iam.RoleInlinePolicyArray{ +// &iam.RoleInlinePolicyArgs{ +// Name: pulumi.String("example_name"), +// Policy: pulumi.String(json1), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// test, err := datazone.NewDomain(ctx, "test", &datazone.DomainArgs{ +// Name: pulumi.String("example_name"), +// DomainExecutionRole: domainExecutionRole.Arn, +// }) +// if err != nil { +// return err +// } +// _, err = ec2.NewSecurityGroup(ctx, "test", &ec2.SecurityGroupArgs{ +// Name: pulumi.String("example_name"), +// }) +// if err != nil { +// return err +// } +// testProject, err := datazone.NewProject(ctx, "test", &datazone.ProjectArgs{ +// DomainIdentifier: test.ID(), +// GlossaryTerms: pulumi.StringArray{ +// pulumi.String("2N8w6XJCwZf"), +// }, +// Name: pulumi.String("example_name"), +// Description: pulumi.String("desc"), +// SkipDeletionCheck: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// _, err = datazone.NewGlossary(ctx, "test", &datazone.GlossaryArgs{ +// Description: pulumi.String("description"), +// Name: pulumi.String("example_name"), +// OwningProjectIdentifier: testProject.ID(), +// Status: pulumi.String("DISABLED"), +// DomainIdentifier: testProject.DomainIdentifier, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Basic Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/datazone" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := datazone.NewGlossary(ctx, "test", &datazone.GlossaryArgs{ +// Description: pulumi.String("description"), +// Name: pulumi.String("example_name"), +// OwningProjectIdentifier: pulumi.Any(testAwsDatazoneProject.Id), +// Status: pulumi.String("DISABLED"), +// DomainIdentifier: pulumi.Any(testAwsDatazoneProject.DomainIdentifier), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import DataZone Glossary using the import Datazone Glossary using a comma-delimited string combining the domain id, glossary id, and the id of the project it's under. For example: +// +// ```sh +// $ pulumi import aws:datazone/glossary:Glossary example domain-id,glossary-id,owning-project-identifier +// ``` +type Glossary struct { + pulumi.CustomResourceState + + // Description of the glossary. Must have a length between 0 and 4096. + Description pulumi.StringPtrOutput `pulumi:"description"` + DomainIdentifier pulumi.StringOutput `pulumi:"domainIdentifier"` + // Name of the glossary. Must have length between 1 and 256. + Name pulumi.StringOutput `pulumi:"name"` + // ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + // + // The following arguments are optional: + OwningProjectIdentifier pulumi.StringOutput `pulumi:"owningProjectIdentifier"` + // Status of business glossary. Valid values are DISABLED and ENABLED. + Status pulumi.StringPtrOutput `pulumi:"status"` +} + +// NewGlossary registers a new resource with the given unique name, arguments, and options. +func NewGlossary(ctx *pulumi.Context, + name string, args *GlossaryArgs, opts ...pulumi.ResourceOption) (*Glossary, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.DomainIdentifier == nil { + return nil, errors.New("invalid value for required argument 'DomainIdentifier'") + } + if args.OwningProjectIdentifier == nil { + return nil, errors.New("invalid value for required argument 'OwningProjectIdentifier'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Glossary + err := ctx.RegisterResource("aws:datazone/glossary:Glossary", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetGlossary gets an existing Glossary resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetGlossary(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *GlossaryState, opts ...pulumi.ResourceOption) (*Glossary, error) { + var resource Glossary + err := ctx.ReadResource("aws:datazone/glossary:Glossary", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Glossary resources. +type glossaryState struct { + // Description of the glossary. Must have a length between 0 and 4096. + Description *string `pulumi:"description"` + DomainIdentifier *string `pulumi:"domainIdentifier"` + // Name of the glossary. Must have length between 1 and 256. + Name *string `pulumi:"name"` + // ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + // + // The following arguments are optional: + OwningProjectIdentifier *string `pulumi:"owningProjectIdentifier"` + // Status of business glossary. Valid values are DISABLED and ENABLED. + Status *string `pulumi:"status"` +} + +type GlossaryState struct { + // Description of the glossary. Must have a length between 0 and 4096. + Description pulumi.StringPtrInput + DomainIdentifier pulumi.StringPtrInput + // Name of the glossary. Must have length between 1 and 256. + Name pulumi.StringPtrInput + // ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + // + // The following arguments are optional: + OwningProjectIdentifier pulumi.StringPtrInput + // Status of business glossary. Valid values are DISABLED and ENABLED. + Status pulumi.StringPtrInput +} + +func (GlossaryState) ElementType() reflect.Type { + return reflect.TypeOf((*glossaryState)(nil)).Elem() +} + +type glossaryArgs struct { + // Description of the glossary. Must have a length between 0 and 4096. + Description *string `pulumi:"description"` + DomainIdentifier string `pulumi:"domainIdentifier"` + // Name of the glossary. Must have length between 1 and 256. + Name *string `pulumi:"name"` + // ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + // + // The following arguments are optional: + OwningProjectIdentifier string `pulumi:"owningProjectIdentifier"` + // Status of business glossary. Valid values are DISABLED and ENABLED. + Status *string `pulumi:"status"` +} + +// The set of arguments for constructing a Glossary resource. +type GlossaryArgs struct { + // Description of the glossary. Must have a length between 0 and 4096. + Description pulumi.StringPtrInput + DomainIdentifier pulumi.StringInput + // Name of the glossary. Must have length between 1 and 256. + Name pulumi.StringPtrInput + // ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + // + // The following arguments are optional: + OwningProjectIdentifier pulumi.StringInput + // Status of business glossary. Valid values are DISABLED and ENABLED. + Status pulumi.StringPtrInput +} + +func (GlossaryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*glossaryArgs)(nil)).Elem() +} + +type GlossaryInput interface { + pulumi.Input + + ToGlossaryOutput() GlossaryOutput + ToGlossaryOutputWithContext(ctx context.Context) GlossaryOutput +} + +func (*Glossary) ElementType() reflect.Type { + return reflect.TypeOf((**Glossary)(nil)).Elem() +} + +func (i *Glossary) ToGlossaryOutput() GlossaryOutput { + return i.ToGlossaryOutputWithContext(context.Background()) +} + +func (i *Glossary) ToGlossaryOutputWithContext(ctx context.Context) GlossaryOutput { + return pulumi.ToOutputWithContext(ctx, i).(GlossaryOutput) +} + +// GlossaryArrayInput is an input type that accepts GlossaryArray and GlossaryArrayOutput values. +// You can construct a concrete instance of `GlossaryArrayInput` via: +// +// GlossaryArray{ GlossaryArgs{...} } +type GlossaryArrayInput interface { + pulumi.Input + + ToGlossaryArrayOutput() GlossaryArrayOutput + ToGlossaryArrayOutputWithContext(context.Context) GlossaryArrayOutput +} + +type GlossaryArray []GlossaryInput + +func (GlossaryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Glossary)(nil)).Elem() +} + +func (i GlossaryArray) ToGlossaryArrayOutput() GlossaryArrayOutput { + return i.ToGlossaryArrayOutputWithContext(context.Background()) +} + +func (i GlossaryArray) ToGlossaryArrayOutputWithContext(ctx context.Context) GlossaryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GlossaryArrayOutput) +} + +// GlossaryMapInput is an input type that accepts GlossaryMap and GlossaryMapOutput values. +// You can construct a concrete instance of `GlossaryMapInput` via: +// +// GlossaryMap{ "key": GlossaryArgs{...} } +type GlossaryMapInput interface { + pulumi.Input + + ToGlossaryMapOutput() GlossaryMapOutput + ToGlossaryMapOutputWithContext(context.Context) GlossaryMapOutput +} + +type GlossaryMap map[string]GlossaryInput + +func (GlossaryMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Glossary)(nil)).Elem() +} + +func (i GlossaryMap) ToGlossaryMapOutput() GlossaryMapOutput { + return i.ToGlossaryMapOutputWithContext(context.Background()) +} + +func (i GlossaryMap) ToGlossaryMapOutputWithContext(ctx context.Context) GlossaryMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(GlossaryMapOutput) +} + +type GlossaryOutput struct{ *pulumi.OutputState } + +func (GlossaryOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Glossary)(nil)).Elem() +} + +func (o GlossaryOutput) ToGlossaryOutput() GlossaryOutput { + return o +} + +func (o GlossaryOutput) ToGlossaryOutputWithContext(ctx context.Context) GlossaryOutput { + return o +} + +// Description of the glossary. Must have a length between 0 and 4096. +func (o GlossaryOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Glossary) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +func (o GlossaryOutput) DomainIdentifier() pulumi.StringOutput { + return o.ApplyT(func(v *Glossary) pulumi.StringOutput { return v.DomainIdentifier }).(pulumi.StringOutput) +} + +// Name of the glossary. Must have length between 1 and 256. +func (o GlossaryOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Glossary) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. +// +// The following arguments are optional: +func (o GlossaryOutput) OwningProjectIdentifier() pulumi.StringOutput { + return o.ApplyT(func(v *Glossary) pulumi.StringOutput { return v.OwningProjectIdentifier }).(pulumi.StringOutput) +} + +// Status of business glossary. Valid values are DISABLED and ENABLED. +func (o GlossaryOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Glossary) pulumi.StringPtrOutput { return v.Status }).(pulumi.StringPtrOutput) +} + +type GlossaryArrayOutput struct{ *pulumi.OutputState } + +func (GlossaryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Glossary)(nil)).Elem() +} + +func (o GlossaryArrayOutput) ToGlossaryArrayOutput() GlossaryArrayOutput { + return o +} + +func (o GlossaryArrayOutput) ToGlossaryArrayOutputWithContext(ctx context.Context) GlossaryArrayOutput { + return o +} + +func (o GlossaryArrayOutput) Index(i pulumi.IntInput) GlossaryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Glossary { + return vs[0].([]*Glossary)[vs[1].(int)] + }).(GlossaryOutput) +} + +type GlossaryMapOutput struct{ *pulumi.OutputState } + +func (GlossaryMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Glossary)(nil)).Elem() +} + +func (o GlossaryMapOutput) ToGlossaryMapOutput() GlossaryMapOutput { + return o +} + +func (o GlossaryMapOutput) ToGlossaryMapOutputWithContext(ctx context.Context) GlossaryMapOutput { + return o +} + +func (o GlossaryMapOutput) MapIndex(k pulumi.StringInput) GlossaryOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Glossary { + return vs[0].(map[string]*Glossary)[vs[1].(string)] + }).(GlossaryOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*GlossaryInput)(nil)).Elem(), &Glossary{}) + pulumi.RegisterInputType(reflect.TypeOf((*GlossaryArrayInput)(nil)).Elem(), GlossaryArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GlossaryMapInput)(nil)).Elem(), GlossaryMap{}) + pulumi.RegisterOutputType(GlossaryOutput{}) + pulumi.RegisterOutputType(GlossaryArrayOutput{}) + pulumi.RegisterOutputType(GlossaryMapOutput{}) +} diff --git a/sdk/go/aws/datazone/init.go b/sdk/go/aws/datazone/init.go index 004077e01dc..75a85fa261d 100644 --- a/sdk/go/aws/datazone/init.go +++ b/sdk/go/aws/datazone/init.go @@ -25,6 +25,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &Domain{} case "aws:datazone/environmentBlueprintConfiguration:EnvironmentBlueprintConfiguration": r = &EnvironmentBlueprintConfiguration{} + case "aws:datazone/glossary:Glossary": + r = &Glossary{} case "aws:datazone/project:Project": r = &Project{} default: @@ -50,6 +52,11 @@ func init() { "datazone/environmentBlueprintConfiguration", &module{version}, ) + pulumi.RegisterResourceModule( + "aws", + "datazone/glossary", + &module{version}, + ) pulumi.RegisterResourceModule( "aws", "datazone/project", diff --git a/sdk/go/aws/ec2/pulumiTypes.go b/sdk/go/aws/ec2/pulumiTypes.go index 16e2118d1f6..a98b3d59fb9 100644 --- a/sdk/go/aws/ec2/pulumiTypes.go +++ b/sdk/go/aws/ec2/pulumiTypes.go @@ -7122,7 +7122,7 @@ func (o InstanceEphemeralBlockDeviceArrayOutput) Index(i pulumi.IntInput) Instan } type InstanceInstanceMarketOptions struct { - // Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spotOptions` is specified. + // Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spotOptions` is specified. MarketType *string `pulumi:"marketType"` // Block to configure the options for Spot Instances. See Spot Options below for details on attributes. SpotOptions *InstanceInstanceMarketOptionsSpotOptions `pulumi:"spotOptions"` @@ -7140,7 +7140,7 @@ type InstanceInstanceMarketOptionsInput interface { } type InstanceInstanceMarketOptionsArgs struct { - // Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spotOptions` is specified. + // Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spotOptions` is specified. MarketType pulumi.StringPtrInput `pulumi:"marketType"` // Block to configure the options for Spot Instances. See Spot Options below for details on attributes. SpotOptions InstanceInstanceMarketOptionsSpotOptionsPtrInput `pulumi:"spotOptions"` @@ -7223,7 +7223,7 @@ func (o InstanceInstanceMarketOptionsOutput) ToInstanceInstanceMarketOptionsPtrO }).(InstanceInstanceMarketOptionsPtrOutput) } -// Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spotOptions` is specified. +// Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spotOptions` is specified. func (o InstanceInstanceMarketOptionsOutput) MarketType() pulumi.StringPtrOutput { return o.ApplyT(func(v InstanceInstanceMarketOptions) *string { return v.MarketType }).(pulumi.StringPtrOutput) } @@ -7257,7 +7257,7 @@ func (o InstanceInstanceMarketOptionsPtrOutput) Elem() InstanceInstanceMarketOpt }).(InstanceInstanceMarketOptionsOutput) } -// Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spotOptions` is specified. +// Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spotOptions` is specified. func (o InstanceInstanceMarketOptionsPtrOutput) MarketType() pulumi.StringPtrOutput { return o.ApplyT(func(v *InstanceInstanceMarketOptions) *string { if v == nil { diff --git a/sdk/go/aws/ec2/vpc.go b/sdk/go/aws/ec2/vpc.go index a5579b7eb01..448b4c249f0 100644 --- a/sdk/go/aws/ec2/vpc.go +++ b/sdk/go/aws/ec2/vpc.go @@ -174,7 +174,7 @@ type Vpc struct { Ipv6CidrBlockNetworkBorderGroup pulumi.StringOutput `pulumi:"ipv6CidrBlockNetworkBorderGroup"` // IPAM Pool ID for a IPv6 pool. Conflicts with `assignGeneratedIpv6CidrBlock`. Ipv6IpamPoolId pulumi.StringPtrOutput `pulumi:"ipv6IpamPoolId"` - // Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values: `56`. + // Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values are from `44` to `60` in increments of 4. Ipv6NetmaskLength pulumi.IntPtrOutput `pulumi:"ipv6NetmaskLength"` // The ID of the main route table associated with // this VPC. Note that you can change a VPC's main route table by using an @@ -254,7 +254,7 @@ type vpcState struct { Ipv6CidrBlockNetworkBorderGroup *string `pulumi:"ipv6CidrBlockNetworkBorderGroup"` // IPAM Pool ID for a IPv6 pool. Conflicts with `assignGeneratedIpv6CidrBlock`. Ipv6IpamPoolId *string `pulumi:"ipv6IpamPoolId"` - // Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values: `56`. + // Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values are from `44` to `60` in increments of 4. Ipv6NetmaskLength *int `pulumi:"ipv6NetmaskLength"` // The ID of the main route table associated with // this VPC. Note that you can change a VPC's main route table by using an @@ -305,7 +305,7 @@ type VpcState struct { Ipv6CidrBlockNetworkBorderGroup pulumi.StringPtrInput // IPAM Pool ID for a IPv6 pool. Conflicts with `assignGeneratedIpv6CidrBlock`. Ipv6IpamPoolId pulumi.StringPtrInput - // Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values: `56`. + // Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values are from `44` to `60` in increments of 4. Ipv6NetmaskLength pulumi.IntPtrInput // The ID of the main route table associated with // this VPC. Note that you can change a VPC's main route table by using an @@ -348,7 +348,7 @@ type vpcArgs struct { Ipv6CidrBlockNetworkBorderGroup *string `pulumi:"ipv6CidrBlockNetworkBorderGroup"` // IPAM Pool ID for a IPv6 pool. Conflicts with `assignGeneratedIpv6CidrBlock`. Ipv6IpamPoolId *string `pulumi:"ipv6IpamPoolId"` - // Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values: `56`. + // Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values are from `44` to `60` in increments of 4. Ipv6NetmaskLength *int `pulumi:"ipv6NetmaskLength"` // A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. Tags map[string]string `pulumi:"tags"` @@ -378,7 +378,7 @@ type VpcArgs struct { Ipv6CidrBlockNetworkBorderGroup pulumi.StringPtrInput // IPAM Pool ID for a IPv6 pool. Conflicts with `assignGeneratedIpv6CidrBlock`. Ipv6IpamPoolId pulumi.StringPtrInput - // Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values: `56`. + // Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values are from `44` to `60` in increments of 4. Ipv6NetmaskLength pulumi.IntPtrInput // A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. Tags pulumi.StringMapInput @@ -556,7 +556,7 @@ func (o VpcOutput) Ipv6IpamPoolId() pulumi.StringPtrOutput { return o.ApplyT(func(v *Vpc) pulumi.StringPtrOutput { return v.Ipv6IpamPoolId }).(pulumi.StringPtrOutput) } -// Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values: `56`. +// Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values are from `44` to `60` in increments of 4. func (o VpcOutput) Ipv6NetmaskLength() pulumi.IntPtrOutput { return o.ApplyT(func(v *Vpc) pulumi.IntPtrOutput { return v.Ipv6NetmaskLength }).(pulumi.IntPtrOutput) } diff --git a/sdk/go/aws/ec2/vpcIpamPoolCidrAllocation.go b/sdk/go/aws/ec2/vpcIpamPoolCidrAllocation.go index 5b6d85e8665..ba996b71d5d 100644 --- a/sdk/go/aws/ec2/vpcIpamPoolCidrAllocation.go +++ b/sdk/go/aws/ec2/vpcIpamPoolCidrAllocation.go @@ -157,7 +157,7 @@ type VpcIpamPoolCidrAllocation struct { // The ID of the pool to which you want to assign a CIDR. IpamPoolId pulumi.StringOutput `pulumi:"ipamPoolId"` // The netmask length of the CIDR you would like to allocate to the IPAM pool. Valid Values: `0-128`. - NetmaskLength pulumi.IntPtrOutput `pulumi:"netmaskLength"` + NetmaskLength pulumi.IntOutput `pulumi:"netmaskLength"` // The ID of the resource. ResourceId pulumi.StringOutput `pulumi:"resourceId"` // The owner of the resource. @@ -381,8 +381,8 @@ func (o VpcIpamPoolCidrAllocationOutput) IpamPoolId() pulumi.StringOutput { } // The netmask length of the CIDR you would like to allocate to the IPAM pool. Valid Values: `0-128`. -func (o VpcIpamPoolCidrAllocationOutput) NetmaskLength() pulumi.IntPtrOutput { - return o.ApplyT(func(v *VpcIpamPoolCidrAllocation) pulumi.IntPtrOutput { return v.NetmaskLength }).(pulumi.IntPtrOutput) +func (o VpcIpamPoolCidrAllocationOutput) NetmaskLength() pulumi.IntOutput { + return o.ApplyT(func(v *VpcIpamPoolCidrAllocation) pulumi.IntOutput { return v.NetmaskLength }).(pulumi.IntOutput) } // The ID of the resource. diff --git a/sdk/go/aws/ec2/vpcIpv6CidrBlockAssociation.go b/sdk/go/aws/ec2/vpcIpv6CidrBlockAssociation.go index 366ef2f1a7f..198ef746976 100644 --- a/sdk/go/aws/ec2/vpcIpv6CidrBlockAssociation.go +++ b/sdk/go/aws/ec2/vpcIpv6CidrBlockAssociation.go @@ -59,12 +59,16 @@ import ( type VpcIpv6CidrBlockAssociation struct { pulumi.CustomResourceState - // The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. + // Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6PamPoolId`, `ipv6Pool`, `ipv6CidrBlock` and `ipv6NetmaskLength`. + AssignGeneratedIpv6CidrBlock pulumi.BoolOutput `pulumi:"assignGeneratedIpv6CidrBlock"` + // The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. Conflicts with `assignGeneratedIpv6CidrBlock`. Ipv6CidrBlock pulumi.StringOutput `pulumi:"ipv6CidrBlock"` - // The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. - Ipv6IpamPoolId pulumi.StringOutput `pulumi:"ipv6IpamPoolId"` - // The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `cidrBlock` are required + // - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. + Ipv6IpamPoolId pulumi.StringPtrOutput `pulumi:"ipv6IpamPoolId"` + // The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `ipv6CidrBlock` are required. Conflicts with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. Ipv6NetmaskLength pulumi.IntPtrOutput `pulumi:"ipv6NetmaskLength"` + // The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6PamPoolId`, `ipv6Pool`. + Ipv6Pool pulumi.StringOutput `pulumi:"ipv6Pool"` // The ID of the VPC to make the association with. VpcId pulumi.StringOutput `pulumi:"vpcId"` } @@ -76,9 +80,6 @@ func NewVpcIpv6CidrBlockAssociation(ctx *pulumi.Context, return nil, errors.New("missing one or more required arguments") } - if args.Ipv6IpamPoolId == nil { - return nil, errors.New("invalid value for required argument 'Ipv6IpamPoolId'") - } if args.VpcId == nil { return nil, errors.New("invalid value for required argument 'VpcId'") } @@ -105,23 +106,31 @@ func GetVpcIpv6CidrBlockAssociation(ctx *pulumi.Context, // Input properties used for looking up and filtering VpcIpv6CidrBlockAssociation resources. type vpcIpv6CidrBlockAssociationState struct { - // The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. + // Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6PamPoolId`, `ipv6Pool`, `ipv6CidrBlock` and `ipv6NetmaskLength`. + AssignGeneratedIpv6CidrBlock *bool `pulumi:"assignGeneratedIpv6CidrBlock"` + // The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. Conflicts with `assignGeneratedIpv6CidrBlock`. Ipv6CidrBlock *string `pulumi:"ipv6CidrBlock"` - // The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + // - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. Ipv6IpamPoolId *string `pulumi:"ipv6IpamPoolId"` - // The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `cidrBlock` are required + // The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `ipv6CidrBlock` are required. Conflicts with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. Ipv6NetmaskLength *int `pulumi:"ipv6NetmaskLength"` + // The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6PamPoolId`, `ipv6Pool`. + Ipv6Pool *string `pulumi:"ipv6Pool"` // The ID of the VPC to make the association with. VpcId *string `pulumi:"vpcId"` } type VpcIpv6CidrBlockAssociationState struct { - // The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. + // Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6PamPoolId`, `ipv6Pool`, `ipv6CidrBlock` and `ipv6NetmaskLength`. + AssignGeneratedIpv6CidrBlock pulumi.BoolPtrInput + // The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. Conflicts with `assignGeneratedIpv6CidrBlock`. Ipv6CidrBlock pulumi.StringPtrInput - // The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + // - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. Ipv6IpamPoolId pulumi.StringPtrInput - // The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `cidrBlock` are required + // The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `ipv6CidrBlock` are required. Conflicts with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. Ipv6NetmaskLength pulumi.IntPtrInput + // The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6PamPoolId`, `ipv6Pool`. + Ipv6Pool pulumi.StringPtrInput // The ID of the VPC to make the association with. VpcId pulumi.StringPtrInput } @@ -131,24 +140,32 @@ func (VpcIpv6CidrBlockAssociationState) ElementType() reflect.Type { } type vpcIpv6CidrBlockAssociationArgs struct { - // The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. + // Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6PamPoolId`, `ipv6Pool`, `ipv6CidrBlock` and `ipv6NetmaskLength`. + AssignGeneratedIpv6CidrBlock *bool `pulumi:"assignGeneratedIpv6CidrBlock"` + // The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. Conflicts with `assignGeneratedIpv6CidrBlock`. Ipv6CidrBlock *string `pulumi:"ipv6CidrBlock"` - // The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. - Ipv6IpamPoolId string `pulumi:"ipv6IpamPoolId"` - // The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `cidrBlock` are required + // - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. + Ipv6IpamPoolId *string `pulumi:"ipv6IpamPoolId"` + // The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `ipv6CidrBlock` are required. Conflicts with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. Ipv6NetmaskLength *int `pulumi:"ipv6NetmaskLength"` + // The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6PamPoolId`, `ipv6Pool`. + Ipv6Pool *string `pulumi:"ipv6Pool"` // The ID of the VPC to make the association with. VpcId string `pulumi:"vpcId"` } // The set of arguments for constructing a VpcIpv6CidrBlockAssociation resource. type VpcIpv6CidrBlockAssociationArgs struct { - // The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. + // Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6PamPoolId`, `ipv6Pool`, `ipv6CidrBlock` and `ipv6NetmaskLength`. + AssignGeneratedIpv6CidrBlock pulumi.BoolPtrInput + // The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. Conflicts with `assignGeneratedIpv6CidrBlock`. Ipv6CidrBlock pulumi.StringPtrInput - // The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. - Ipv6IpamPoolId pulumi.StringInput - // The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `cidrBlock` are required + // - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. + Ipv6IpamPoolId pulumi.StringPtrInput + // The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `ipv6CidrBlock` are required. Conflicts with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. Ipv6NetmaskLength pulumi.IntPtrInput + // The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6PamPoolId`, `ipv6Pool`. + Ipv6Pool pulumi.StringPtrInput // The ID of the VPC to make the association with. VpcId pulumi.StringInput } @@ -240,21 +257,31 @@ func (o VpcIpv6CidrBlockAssociationOutput) ToVpcIpv6CidrBlockAssociationOutputWi return o } -// The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. +// Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6PamPoolId`, `ipv6Pool`, `ipv6CidrBlock` and `ipv6NetmaskLength`. +func (o VpcIpv6CidrBlockAssociationOutput) AssignGeneratedIpv6CidrBlock() pulumi.BoolOutput { + return o.ApplyT(func(v *VpcIpv6CidrBlockAssociation) pulumi.BoolOutput { return v.AssignGeneratedIpv6CidrBlock }).(pulumi.BoolOutput) +} + +// The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. Conflicts with `assignGeneratedIpv6CidrBlock`. func (o VpcIpv6CidrBlockAssociationOutput) Ipv6CidrBlock() pulumi.StringOutput { return o.ApplyT(func(v *VpcIpv6CidrBlockAssociation) pulumi.StringOutput { return v.Ipv6CidrBlock }).(pulumi.StringOutput) } -// The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. -func (o VpcIpv6CidrBlockAssociationOutput) Ipv6IpamPoolId() pulumi.StringOutput { - return o.ApplyT(func(v *VpcIpv6CidrBlockAssociation) pulumi.StringOutput { return v.Ipv6IpamPoolId }).(pulumi.StringOutput) +// - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. +func (o VpcIpv6CidrBlockAssociationOutput) Ipv6IpamPoolId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VpcIpv6CidrBlockAssociation) pulumi.StringPtrOutput { return v.Ipv6IpamPoolId }).(pulumi.StringPtrOutput) } -// The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `cidrBlock` are required +// The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `ipv6CidrBlock` are required. Conflicts with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. func (o VpcIpv6CidrBlockAssociationOutput) Ipv6NetmaskLength() pulumi.IntPtrOutput { return o.ApplyT(func(v *VpcIpv6CidrBlockAssociation) pulumi.IntPtrOutput { return v.Ipv6NetmaskLength }).(pulumi.IntPtrOutput) } +// The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6PamPoolId`, `ipv6Pool`. +func (o VpcIpv6CidrBlockAssociationOutput) Ipv6Pool() pulumi.StringOutput { + return o.ApplyT(func(v *VpcIpv6CidrBlockAssociation) pulumi.StringOutput { return v.Ipv6Pool }).(pulumi.StringOutput) +} + // The ID of the VPC to make the association with. func (o VpcIpv6CidrBlockAssociationOutput) VpcId() pulumi.StringOutput { return o.ApplyT(func(v *VpcIpv6CidrBlockAssociation) pulumi.StringOutput { return v.VpcId }).(pulumi.StringOutput) diff --git a/sdk/go/aws/ecr/getRepositoryCreationTemplate.go b/sdk/go/aws/ecr/getRepositoryCreationTemplate.go new file mode 100644 index 00000000000..44a8e6d9a44 --- /dev/null +++ b/sdk/go/aws/ecr/getRepositoryCreationTemplate.go @@ -0,0 +1,182 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package ecr + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The ECR Repository Creation Template data source allows the template details to be retrieved for a Repository Creation Template. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecr" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecr.LookupRepositoryCreationTemplate(ctx, &ecr.LookupRepositoryCreationTemplateArgs{ +// Prefix: "example", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupRepositoryCreationTemplate(ctx *pulumi.Context, args *LookupRepositoryCreationTemplateArgs, opts ...pulumi.InvokeOption) (*LookupRepositoryCreationTemplateResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupRepositoryCreationTemplateResult + err := ctx.Invoke("aws:ecr/getRepositoryCreationTemplate:getRepositoryCreationTemplate", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getRepositoryCreationTemplate. +type LookupRepositoryCreationTemplateArgs struct { + // The repository name prefix that the template matches against. + Prefix string `pulumi:"prefix"` + // A map of tags to assign to any created repositories. + ResourceTags map[string]string `pulumi:"resourceTags"` +} + +// A collection of values returned by getRepositoryCreationTemplate. +type LookupRepositoryCreationTemplateResult struct { + // Which features this template applies to. Contains one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + AppliedFors []string `pulumi:"appliedFors"` + // The ARN of the custom role used for repository creation. + CustomRoleArn string `pulumi:"customRoleArn"` + // The description for this template. + Description string `pulumi:"description"` + // Encryption configuration for any created repositories. See Encryption Configuration below. + EncryptionConfigurations []GetRepositoryCreationTemplateEncryptionConfiguration `pulumi:"encryptionConfigurations"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // The tag mutability setting for any created repositories. + ImageTagMutability string `pulumi:"imageTagMutability"` + // The lifecycle policy document to apply to any created repositories. + LifecyclePolicy string `pulumi:"lifecyclePolicy"` + Prefix string `pulumi:"prefix"` + // The registry ID the repository creation template applies to. + RegistryId string `pulumi:"registryId"` + // The registry policy document to apply to any created repositories. + RepositoryPolicy string `pulumi:"repositoryPolicy"` + // A map of tags to assign to any created repositories. + ResourceTags map[string]string `pulumi:"resourceTags"` +} + +func LookupRepositoryCreationTemplateOutput(ctx *pulumi.Context, args LookupRepositoryCreationTemplateOutputArgs, opts ...pulumi.InvokeOption) LookupRepositoryCreationTemplateResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupRepositoryCreationTemplateResult, error) { + args := v.(LookupRepositoryCreationTemplateArgs) + r, err := LookupRepositoryCreationTemplate(ctx, &args, opts...) + var s LookupRepositoryCreationTemplateResult + if r != nil { + s = *r + } + return s, err + }).(LookupRepositoryCreationTemplateResultOutput) +} + +// A collection of arguments for invoking getRepositoryCreationTemplate. +type LookupRepositoryCreationTemplateOutputArgs struct { + // The repository name prefix that the template matches against. + Prefix pulumi.StringInput `pulumi:"prefix"` + // A map of tags to assign to any created repositories. + ResourceTags pulumi.StringMapInput `pulumi:"resourceTags"` +} + +func (LookupRepositoryCreationTemplateOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupRepositoryCreationTemplateArgs)(nil)).Elem() +} + +// A collection of values returned by getRepositoryCreationTemplate. +type LookupRepositoryCreationTemplateResultOutput struct{ *pulumi.OutputState } + +func (LookupRepositoryCreationTemplateResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupRepositoryCreationTemplateResult)(nil)).Elem() +} + +func (o LookupRepositoryCreationTemplateResultOutput) ToLookupRepositoryCreationTemplateResultOutput() LookupRepositoryCreationTemplateResultOutput { + return o +} + +func (o LookupRepositoryCreationTemplateResultOutput) ToLookupRepositoryCreationTemplateResultOutputWithContext(ctx context.Context) LookupRepositoryCreationTemplateResultOutput { + return o +} + +// Which features this template applies to. Contains one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. +func (o LookupRepositoryCreationTemplateResultOutput) AppliedFors() pulumi.StringArrayOutput { + return o.ApplyT(func(v LookupRepositoryCreationTemplateResult) []string { return v.AppliedFors }).(pulumi.StringArrayOutput) +} + +// The ARN of the custom role used for repository creation. +func (o LookupRepositoryCreationTemplateResultOutput) CustomRoleArn() pulumi.StringOutput { + return o.ApplyT(func(v LookupRepositoryCreationTemplateResult) string { return v.CustomRoleArn }).(pulumi.StringOutput) +} + +// The description for this template. +func (o LookupRepositoryCreationTemplateResultOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v LookupRepositoryCreationTemplateResult) string { return v.Description }).(pulumi.StringOutput) +} + +// Encryption configuration for any created repositories. See Encryption Configuration below. +func (o LookupRepositoryCreationTemplateResultOutput) EncryptionConfigurations() GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput { + return o.ApplyT(func(v LookupRepositoryCreationTemplateResult) []GetRepositoryCreationTemplateEncryptionConfiguration { + return v.EncryptionConfigurations + }).(GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupRepositoryCreationTemplateResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupRepositoryCreationTemplateResult) string { return v.Id }).(pulumi.StringOutput) +} + +// The tag mutability setting for any created repositories. +func (o LookupRepositoryCreationTemplateResultOutput) ImageTagMutability() pulumi.StringOutput { + return o.ApplyT(func(v LookupRepositoryCreationTemplateResult) string { return v.ImageTagMutability }).(pulumi.StringOutput) +} + +// The lifecycle policy document to apply to any created repositories. +func (o LookupRepositoryCreationTemplateResultOutput) LifecyclePolicy() pulumi.StringOutput { + return o.ApplyT(func(v LookupRepositoryCreationTemplateResult) string { return v.LifecyclePolicy }).(pulumi.StringOutput) +} + +func (o LookupRepositoryCreationTemplateResultOutput) Prefix() pulumi.StringOutput { + return o.ApplyT(func(v LookupRepositoryCreationTemplateResult) string { return v.Prefix }).(pulumi.StringOutput) +} + +// The registry ID the repository creation template applies to. +func (o LookupRepositoryCreationTemplateResultOutput) RegistryId() pulumi.StringOutput { + return o.ApplyT(func(v LookupRepositoryCreationTemplateResult) string { return v.RegistryId }).(pulumi.StringOutput) +} + +// The registry policy document to apply to any created repositories. +func (o LookupRepositoryCreationTemplateResultOutput) RepositoryPolicy() pulumi.StringOutput { + return o.ApplyT(func(v LookupRepositoryCreationTemplateResult) string { return v.RepositoryPolicy }).(pulumi.StringOutput) +} + +// A map of tags to assign to any created repositories. +func (o LookupRepositoryCreationTemplateResultOutput) ResourceTags() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupRepositoryCreationTemplateResult) map[string]string { return v.ResourceTags }).(pulumi.StringMapOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupRepositoryCreationTemplateResultOutput{}) +} diff --git a/sdk/go/aws/ecr/init.go b/sdk/go/aws/ecr/init.go index 42a59e541e4..2e9d37b5b9f 100644 --- a/sdk/go/aws/ecr/init.go +++ b/sdk/go/aws/ecr/init.go @@ -33,6 +33,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &ReplicationConfiguration{} case "aws:ecr/repository:Repository": r = &Repository{} + case "aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate": + r = &RepositoryCreationTemplate{} case "aws:ecr/repositoryPolicy:RepositoryPolicy": r = &RepositoryPolicy{} default: @@ -78,6 +80,11 @@ func init() { "ecr/repository", &module{version}, ) + pulumi.RegisterResourceModule( + "aws", + "ecr/repositoryCreationTemplate", + &module{version}, + ) pulumi.RegisterResourceModule( "aws", "ecr/repositoryPolicy", diff --git a/sdk/go/aws/ecr/pulumiTypes.go b/sdk/go/aws/ecr/pulumiTypes.go index 9f9d99b9d1d..b81f8b03e0c 100644 --- a/sdk/go/aws/ecr/pulumiTypes.go +++ b/sdk/go/aws/ecr/pulumiTypes.go @@ -684,6 +684,112 @@ func (o ReplicationConfigurationReplicationConfigurationRuleRepositoryFilterArra }).(ReplicationConfigurationReplicationConfigurationRuleRepositoryFilterOutput) } +type RepositoryCreationTemplateEncryptionConfiguration struct { + // The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + EncryptionType *string `pulumi:"encryptionType"` + // The ARN of the KMS key to use when `encryptionType` is `KMS`. If not specified, uses the default AWS managed key for ECR. + KmsKey *string `pulumi:"kmsKey"` +} + +// RepositoryCreationTemplateEncryptionConfigurationInput is an input type that accepts RepositoryCreationTemplateEncryptionConfigurationArgs and RepositoryCreationTemplateEncryptionConfigurationOutput values. +// You can construct a concrete instance of `RepositoryCreationTemplateEncryptionConfigurationInput` via: +// +// RepositoryCreationTemplateEncryptionConfigurationArgs{...} +type RepositoryCreationTemplateEncryptionConfigurationInput interface { + pulumi.Input + + ToRepositoryCreationTemplateEncryptionConfigurationOutput() RepositoryCreationTemplateEncryptionConfigurationOutput + ToRepositoryCreationTemplateEncryptionConfigurationOutputWithContext(context.Context) RepositoryCreationTemplateEncryptionConfigurationOutput +} + +type RepositoryCreationTemplateEncryptionConfigurationArgs struct { + // The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + EncryptionType pulumi.StringPtrInput `pulumi:"encryptionType"` + // The ARN of the KMS key to use when `encryptionType` is `KMS`. If not specified, uses the default AWS managed key for ECR. + KmsKey pulumi.StringPtrInput `pulumi:"kmsKey"` +} + +func (RepositoryCreationTemplateEncryptionConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RepositoryCreationTemplateEncryptionConfiguration)(nil)).Elem() +} + +func (i RepositoryCreationTemplateEncryptionConfigurationArgs) ToRepositoryCreationTemplateEncryptionConfigurationOutput() RepositoryCreationTemplateEncryptionConfigurationOutput { + return i.ToRepositoryCreationTemplateEncryptionConfigurationOutputWithContext(context.Background()) +} + +func (i RepositoryCreationTemplateEncryptionConfigurationArgs) ToRepositoryCreationTemplateEncryptionConfigurationOutputWithContext(ctx context.Context) RepositoryCreationTemplateEncryptionConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryCreationTemplateEncryptionConfigurationOutput) +} + +// RepositoryCreationTemplateEncryptionConfigurationArrayInput is an input type that accepts RepositoryCreationTemplateEncryptionConfigurationArray and RepositoryCreationTemplateEncryptionConfigurationArrayOutput values. +// You can construct a concrete instance of `RepositoryCreationTemplateEncryptionConfigurationArrayInput` via: +// +// RepositoryCreationTemplateEncryptionConfigurationArray{ RepositoryCreationTemplateEncryptionConfigurationArgs{...} } +type RepositoryCreationTemplateEncryptionConfigurationArrayInput interface { + pulumi.Input + + ToRepositoryCreationTemplateEncryptionConfigurationArrayOutput() RepositoryCreationTemplateEncryptionConfigurationArrayOutput + ToRepositoryCreationTemplateEncryptionConfigurationArrayOutputWithContext(context.Context) RepositoryCreationTemplateEncryptionConfigurationArrayOutput +} + +type RepositoryCreationTemplateEncryptionConfigurationArray []RepositoryCreationTemplateEncryptionConfigurationInput + +func (RepositoryCreationTemplateEncryptionConfigurationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]RepositoryCreationTemplateEncryptionConfiguration)(nil)).Elem() +} + +func (i RepositoryCreationTemplateEncryptionConfigurationArray) ToRepositoryCreationTemplateEncryptionConfigurationArrayOutput() RepositoryCreationTemplateEncryptionConfigurationArrayOutput { + return i.ToRepositoryCreationTemplateEncryptionConfigurationArrayOutputWithContext(context.Background()) +} + +func (i RepositoryCreationTemplateEncryptionConfigurationArray) ToRepositoryCreationTemplateEncryptionConfigurationArrayOutputWithContext(ctx context.Context) RepositoryCreationTemplateEncryptionConfigurationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryCreationTemplateEncryptionConfigurationArrayOutput) +} + +type RepositoryCreationTemplateEncryptionConfigurationOutput struct{ *pulumi.OutputState } + +func (RepositoryCreationTemplateEncryptionConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RepositoryCreationTemplateEncryptionConfiguration)(nil)).Elem() +} + +func (o RepositoryCreationTemplateEncryptionConfigurationOutput) ToRepositoryCreationTemplateEncryptionConfigurationOutput() RepositoryCreationTemplateEncryptionConfigurationOutput { + return o +} + +func (o RepositoryCreationTemplateEncryptionConfigurationOutput) ToRepositoryCreationTemplateEncryptionConfigurationOutputWithContext(ctx context.Context) RepositoryCreationTemplateEncryptionConfigurationOutput { + return o +} + +// The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. +func (o RepositoryCreationTemplateEncryptionConfigurationOutput) EncryptionType() pulumi.StringPtrOutput { + return o.ApplyT(func(v RepositoryCreationTemplateEncryptionConfiguration) *string { return v.EncryptionType }).(pulumi.StringPtrOutput) +} + +// The ARN of the KMS key to use when `encryptionType` is `KMS`. If not specified, uses the default AWS managed key for ECR. +func (o RepositoryCreationTemplateEncryptionConfigurationOutput) KmsKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v RepositoryCreationTemplateEncryptionConfiguration) *string { return v.KmsKey }).(pulumi.StringPtrOutput) +} + +type RepositoryCreationTemplateEncryptionConfigurationArrayOutput struct{ *pulumi.OutputState } + +func (RepositoryCreationTemplateEncryptionConfigurationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]RepositoryCreationTemplateEncryptionConfiguration)(nil)).Elem() +} + +func (o RepositoryCreationTemplateEncryptionConfigurationArrayOutput) ToRepositoryCreationTemplateEncryptionConfigurationArrayOutput() RepositoryCreationTemplateEncryptionConfigurationArrayOutput { + return o +} + +func (o RepositoryCreationTemplateEncryptionConfigurationArrayOutput) ToRepositoryCreationTemplateEncryptionConfigurationArrayOutputWithContext(ctx context.Context) RepositoryCreationTemplateEncryptionConfigurationArrayOutput { + return o +} + +func (o RepositoryCreationTemplateEncryptionConfigurationArrayOutput) Index(i pulumi.IntInput) RepositoryCreationTemplateEncryptionConfigurationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) RepositoryCreationTemplateEncryptionConfiguration { + return vs[0].([]RepositoryCreationTemplateEncryptionConfiguration)[vs[1].(int)] + }).(RepositoryCreationTemplateEncryptionConfigurationOutput) +} + type RepositoryEncryptionConfiguration struct { // The encryption type to use for the repository. Valid values are `AES256` or `KMS`. Defaults to `AES256`. EncryptionType *string `pulumi:"encryptionType"` @@ -1420,6 +1526,112 @@ func (o GetLifecyclePolicyDocumentRuleSelectionPtrOutput) TagStatus() pulumi.Str }).(pulumi.StringPtrOutput) } +type GetRepositoryCreationTemplateEncryptionConfiguration struct { + // Encryption type to use for any created repositories, either `AES256` or `KMS`. + EncryptionType string `pulumi:"encryptionType"` + // If `encryptionType` is `KMS`, the ARN of the KMS key used. + KmsKey string `pulumi:"kmsKey"` +} + +// GetRepositoryCreationTemplateEncryptionConfigurationInput is an input type that accepts GetRepositoryCreationTemplateEncryptionConfigurationArgs and GetRepositoryCreationTemplateEncryptionConfigurationOutput values. +// You can construct a concrete instance of `GetRepositoryCreationTemplateEncryptionConfigurationInput` via: +// +// GetRepositoryCreationTemplateEncryptionConfigurationArgs{...} +type GetRepositoryCreationTemplateEncryptionConfigurationInput interface { + pulumi.Input + + ToGetRepositoryCreationTemplateEncryptionConfigurationOutput() GetRepositoryCreationTemplateEncryptionConfigurationOutput + ToGetRepositoryCreationTemplateEncryptionConfigurationOutputWithContext(context.Context) GetRepositoryCreationTemplateEncryptionConfigurationOutput +} + +type GetRepositoryCreationTemplateEncryptionConfigurationArgs struct { + // Encryption type to use for any created repositories, either `AES256` or `KMS`. + EncryptionType pulumi.StringInput `pulumi:"encryptionType"` + // If `encryptionType` is `KMS`, the ARN of the KMS key used. + KmsKey pulumi.StringInput `pulumi:"kmsKey"` +} + +func (GetRepositoryCreationTemplateEncryptionConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetRepositoryCreationTemplateEncryptionConfiguration)(nil)).Elem() +} + +func (i GetRepositoryCreationTemplateEncryptionConfigurationArgs) ToGetRepositoryCreationTemplateEncryptionConfigurationOutput() GetRepositoryCreationTemplateEncryptionConfigurationOutput { + return i.ToGetRepositoryCreationTemplateEncryptionConfigurationOutputWithContext(context.Background()) +} + +func (i GetRepositoryCreationTemplateEncryptionConfigurationArgs) ToGetRepositoryCreationTemplateEncryptionConfigurationOutputWithContext(ctx context.Context) GetRepositoryCreationTemplateEncryptionConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRepositoryCreationTemplateEncryptionConfigurationOutput) +} + +// GetRepositoryCreationTemplateEncryptionConfigurationArrayInput is an input type that accepts GetRepositoryCreationTemplateEncryptionConfigurationArray and GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput values. +// You can construct a concrete instance of `GetRepositoryCreationTemplateEncryptionConfigurationArrayInput` via: +// +// GetRepositoryCreationTemplateEncryptionConfigurationArray{ GetRepositoryCreationTemplateEncryptionConfigurationArgs{...} } +type GetRepositoryCreationTemplateEncryptionConfigurationArrayInput interface { + pulumi.Input + + ToGetRepositoryCreationTemplateEncryptionConfigurationArrayOutput() GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput + ToGetRepositoryCreationTemplateEncryptionConfigurationArrayOutputWithContext(context.Context) GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput +} + +type GetRepositoryCreationTemplateEncryptionConfigurationArray []GetRepositoryCreationTemplateEncryptionConfigurationInput + +func (GetRepositoryCreationTemplateEncryptionConfigurationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRepositoryCreationTemplateEncryptionConfiguration)(nil)).Elem() +} + +func (i GetRepositoryCreationTemplateEncryptionConfigurationArray) ToGetRepositoryCreationTemplateEncryptionConfigurationArrayOutput() GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput { + return i.ToGetRepositoryCreationTemplateEncryptionConfigurationArrayOutputWithContext(context.Background()) +} + +func (i GetRepositoryCreationTemplateEncryptionConfigurationArray) ToGetRepositoryCreationTemplateEncryptionConfigurationArrayOutputWithContext(ctx context.Context) GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput) +} + +type GetRepositoryCreationTemplateEncryptionConfigurationOutput struct{ *pulumi.OutputState } + +func (GetRepositoryCreationTemplateEncryptionConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetRepositoryCreationTemplateEncryptionConfiguration)(nil)).Elem() +} + +func (o GetRepositoryCreationTemplateEncryptionConfigurationOutput) ToGetRepositoryCreationTemplateEncryptionConfigurationOutput() GetRepositoryCreationTemplateEncryptionConfigurationOutput { + return o +} + +func (o GetRepositoryCreationTemplateEncryptionConfigurationOutput) ToGetRepositoryCreationTemplateEncryptionConfigurationOutputWithContext(ctx context.Context) GetRepositoryCreationTemplateEncryptionConfigurationOutput { + return o +} + +// Encryption type to use for any created repositories, either `AES256` or `KMS`. +func (o GetRepositoryCreationTemplateEncryptionConfigurationOutput) EncryptionType() pulumi.StringOutput { + return o.ApplyT(func(v GetRepositoryCreationTemplateEncryptionConfiguration) string { return v.EncryptionType }).(pulumi.StringOutput) +} + +// If `encryptionType` is `KMS`, the ARN of the KMS key used. +func (o GetRepositoryCreationTemplateEncryptionConfigurationOutput) KmsKey() pulumi.StringOutput { + return o.ApplyT(func(v GetRepositoryCreationTemplateEncryptionConfiguration) string { return v.KmsKey }).(pulumi.StringOutput) +} + +type GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput struct{ *pulumi.OutputState } + +func (GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRepositoryCreationTemplateEncryptionConfiguration)(nil)).Elem() +} + +func (o GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput) ToGetRepositoryCreationTemplateEncryptionConfigurationArrayOutput() GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput { + return o +} + +func (o GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput) ToGetRepositoryCreationTemplateEncryptionConfigurationArrayOutputWithContext(ctx context.Context) GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput { + return o +} + +func (o GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput) Index(i pulumi.IntInput) GetRepositoryCreationTemplateEncryptionConfigurationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetRepositoryCreationTemplateEncryptionConfiguration { + return vs[0].([]GetRepositoryCreationTemplateEncryptionConfiguration)[vs[1].(int)] + }).(GetRepositoryCreationTemplateEncryptionConfigurationOutput) +} + type GetRepositoryEncryptionConfiguration struct { // Encryption type to use for the repository, either `AES256` or `KMS`. EncryptionType string `pulumi:"encryptionType"` @@ -1636,6 +1848,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*ReplicationConfigurationReplicationConfigurationRuleDestinationArrayInput)(nil)).Elem(), ReplicationConfigurationReplicationConfigurationRuleDestinationArray{}) pulumi.RegisterInputType(reflect.TypeOf((*ReplicationConfigurationReplicationConfigurationRuleRepositoryFilterInput)(nil)).Elem(), ReplicationConfigurationReplicationConfigurationRuleRepositoryFilterArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ReplicationConfigurationReplicationConfigurationRuleRepositoryFilterArrayInput)(nil)).Elem(), ReplicationConfigurationReplicationConfigurationRuleRepositoryFilterArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryCreationTemplateEncryptionConfigurationInput)(nil)).Elem(), RepositoryCreationTemplateEncryptionConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryCreationTemplateEncryptionConfigurationArrayInput)(nil)).Elem(), RepositoryCreationTemplateEncryptionConfigurationArray{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryEncryptionConfigurationInput)(nil)).Elem(), RepositoryEncryptionConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryEncryptionConfigurationArrayInput)(nil)).Elem(), RepositoryEncryptionConfigurationArray{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryImageScanningConfigurationInput)(nil)).Elem(), RepositoryImageScanningConfigurationArgs{}) @@ -1646,6 +1860,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetLifecyclePolicyDocumentRuleActionPtrInput)(nil)).Elem(), GetLifecyclePolicyDocumentRuleActionArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetLifecyclePolicyDocumentRuleSelectionInput)(nil)).Elem(), GetLifecyclePolicyDocumentRuleSelectionArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetLifecyclePolicyDocumentRuleSelectionPtrInput)(nil)).Elem(), GetLifecyclePolicyDocumentRuleSelectionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryCreationTemplateEncryptionConfigurationInput)(nil)).Elem(), GetRepositoryCreationTemplateEncryptionConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryCreationTemplateEncryptionConfigurationArrayInput)(nil)).Elem(), GetRepositoryCreationTemplateEncryptionConfigurationArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryEncryptionConfigurationInput)(nil)).Elem(), GetRepositoryEncryptionConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryEncryptionConfigurationArrayInput)(nil)).Elem(), GetRepositoryEncryptionConfigurationArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryImageScanningConfigurationInput)(nil)).Elem(), GetRepositoryImageScanningConfigurationArgs{}) @@ -1662,6 +1878,8 @@ func init() { pulumi.RegisterOutputType(ReplicationConfigurationReplicationConfigurationRuleDestinationArrayOutput{}) pulumi.RegisterOutputType(ReplicationConfigurationReplicationConfigurationRuleRepositoryFilterOutput{}) pulumi.RegisterOutputType(ReplicationConfigurationReplicationConfigurationRuleRepositoryFilterArrayOutput{}) + pulumi.RegisterOutputType(RepositoryCreationTemplateEncryptionConfigurationOutput{}) + pulumi.RegisterOutputType(RepositoryCreationTemplateEncryptionConfigurationArrayOutput{}) pulumi.RegisterOutputType(RepositoryEncryptionConfigurationOutput{}) pulumi.RegisterOutputType(RepositoryEncryptionConfigurationArrayOutput{}) pulumi.RegisterOutputType(RepositoryImageScanningConfigurationOutput{}) @@ -1672,6 +1890,8 @@ func init() { pulumi.RegisterOutputType(GetLifecyclePolicyDocumentRuleActionPtrOutput{}) pulumi.RegisterOutputType(GetLifecyclePolicyDocumentRuleSelectionOutput{}) pulumi.RegisterOutputType(GetLifecyclePolicyDocumentRuleSelectionPtrOutput{}) + pulumi.RegisterOutputType(GetRepositoryCreationTemplateEncryptionConfigurationOutput{}) + pulumi.RegisterOutputType(GetRepositoryCreationTemplateEncryptionConfigurationArrayOutput{}) pulumi.RegisterOutputType(GetRepositoryEncryptionConfigurationOutput{}) pulumi.RegisterOutputType(GetRepositoryEncryptionConfigurationArrayOutput{}) pulumi.RegisterOutputType(GetRepositoryImageScanningConfigurationOutput{}) diff --git a/sdk/go/aws/ecr/repositoryCreationTemplate.go b/sdk/go/aws/ecr/repositoryCreationTemplate.go new file mode 100644 index 00000000000..b24872a8a9a --- /dev/null +++ b/sdk/go/aws/ecr/repositoryCreationTemplate.go @@ -0,0 +1,454 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package ecr + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an Elastic Container Registry Repository Creation Template. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecr" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("new policy"), +// Effect: pulumi.StringRef("Allow"), +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "AWS", +// Identifiers: []string{ +// "123456789012", +// }, +// }, +// }, +// Actions: []string{ +// "ecr:GetDownloadUrlForLayer", +// "ecr:BatchGetImage", +// "ecr:BatchCheckLayerAvailability", +// "ecr:PutImage", +// "ecr:InitiateLayerUpload", +// "ecr:UploadLayerPart", +// "ecr:CompleteLayerUpload", +// "ecr:DescribeRepositories", +// "ecr:GetRepositoryPolicy", +// "ecr:ListImages", +// "ecr:DeleteRepository", +// "ecr:BatchDeleteImage", +// "ecr:SetRepositoryPolicy", +// "ecr:DeleteRepositoryPolicy", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// _, err = ecr.NewRepositoryCreationTemplate(ctx, "example", &ecr.RepositoryCreationTemplateArgs{ +// Prefix: pulumi.String("example"), +// Description: pulumi.String("An example template"), +// ImageTagMutability: pulumi.String("IMMUTABLE"), +// CustomRoleArn: pulumi.String("arn:aws:iam::123456789012:role/example"), +// AppliedFors: pulumi.StringArray{ +// pulumi.String("PULL_THROUGH_CACHE"), +// }, +// EncryptionConfigurations: ecr.RepositoryCreationTemplateEncryptionConfigurationArray{ +// &ecr.RepositoryCreationTemplateEncryptionConfigurationArgs{ +// EncryptionType: pulumi.String("AES256"), +// }, +// }, +// RepositoryPolicy: pulumi.String(example.Json), +// LifecyclePolicy: pulumi.String(`{ +// "rules": [ +// { +// "rulePriority": 1, +// "description": "Expire images older than 14 days", +// "selection": { +// "tagStatus": "untagged", +// "countType": "sinceImagePushed", +// "countUnit": "days", +// "countNumber": 14 +// }, +// "action": { +// "type": "expire" +// } +// } +// ] +// } +// +// `), +// +// ResourceTags: pulumi.StringMap{ +// "Foo": pulumi.String("Bar"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import the ECR Repository Creating Templates using the `prefix`. For example: +// +// ```sh +// $ pulumi import aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate example example +// ``` +type RepositoryCreationTemplate struct { + pulumi.CustomResourceState + + // Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + AppliedFors pulumi.StringArrayOutput `pulumi:"appliedFors"` + // A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + CustomRoleArn pulumi.StringPtrOutput `pulumi:"customRoleArn"` + // The description for this template. + Description pulumi.StringPtrOutput `pulumi:"description"` + // Encryption configuration for any created repositories. See below for schema. + EncryptionConfigurations RepositoryCreationTemplateEncryptionConfigurationArrayOutput `pulumi:"encryptionConfigurations"` + // The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + ImageTagMutability pulumi.StringPtrOutput `pulumi:"imageTagMutability"` + // The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `ecr.getLifecyclePolicyDocument` dataSource to generate/manage the JSON document used for the `lifecyclePolicy` argument. + LifecyclePolicy pulumi.StringPtrOutput `pulumi:"lifecyclePolicy"` + // The repository name prefix to match against. + Prefix pulumi.StringOutput `pulumi:"prefix"` + // The registry ID the repository creation template applies to. + RegistryId pulumi.StringOutput `pulumi:"registryId"` + RepositoryPolicy pulumi.StringPtrOutput `pulumi:"repositoryPolicy"` + // A map of tags to assign to any created repositories. + ResourceTags pulumi.StringMapOutput `pulumi:"resourceTags"` +} + +// NewRepositoryCreationTemplate registers a new resource with the given unique name, arguments, and options. +func NewRepositoryCreationTemplate(ctx *pulumi.Context, + name string, args *RepositoryCreationTemplateArgs, opts ...pulumi.ResourceOption) (*RepositoryCreationTemplate, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.AppliedFors == nil { + return nil, errors.New("invalid value for required argument 'AppliedFors'") + } + if args.Prefix == nil { + return nil, errors.New("invalid value for required argument 'Prefix'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource RepositoryCreationTemplate + err := ctx.RegisterResource("aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetRepositoryCreationTemplate gets an existing RepositoryCreationTemplate resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetRepositoryCreationTemplate(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *RepositoryCreationTemplateState, opts ...pulumi.ResourceOption) (*RepositoryCreationTemplate, error) { + var resource RepositoryCreationTemplate + err := ctx.ReadResource("aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering RepositoryCreationTemplate resources. +type repositoryCreationTemplateState struct { + // Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + AppliedFors []string `pulumi:"appliedFors"` + // A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + CustomRoleArn *string `pulumi:"customRoleArn"` + // The description for this template. + Description *string `pulumi:"description"` + // Encryption configuration for any created repositories. See below for schema. + EncryptionConfigurations []RepositoryCreationTemplateEncryptionConfiguration `pulumi:"encryptionConfigurations"` + // The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + ImageTagMutability *string `pulumi:"imageTagMutability"` + // The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `ecr.getLifecyclePolicyDocument` dataSource to generate/manage the JSON document used for the `lifecyclePolicy` argument. + LifecyclePolicy *string `pulumi:"lifecyclePolicy"` + // The repository name prefix to match against. + Prefix *string `pulumi:"prefix"` + // The registry ID the repository creation template applies to. + RegistryId *string `pulumi:"registryId"` + RepositoryPolicy *string `pulumi:"repositoryPolicy"` + // A map of tags to assign to any created repositories. + ResourceTags map[string]string `pulumi:"resourceTags"` +} + +type RepositoryCreationTemplateState struct { + // Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + AppliedFors pulumi.StringArrayInput + // A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + CustomRoleArn pulumi.StringPtrInput + // The description for this template. + Description pulumi.StringPtrInput + // Encryption configuration for any created repositories. See below for schema. + EncryptionConfigurations RepositoryCreationTemplateEncryptionConfigurationArrayInput + // The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + ImageTagMutability pulumi.StringPtrInput + // The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `ecr.getLifecyclePolicyDocument` dataSource to generate/manage the JSON document used for the `lifecyclePolicy` argument. + LifecyclePolicy pulumi.StringPtrInput + // The repository name prefix to match against. + Prefix pulumi.StringPtrInput + // The registry ID the repository creation template applies to. + RegistryId pulumi.StringPtrInput + RepositoryPolicy pulumi.StringPtrInput + // A map of tags to assign to any created repositories. + ResourceTags pulumi.StringMapInput +} + +func (RepositoryCreationTemplateState) ElementType() reflect.Type { + return reflect.TypeOf((*repositoryCreationTemplateState)(nil)).Elem() +} + +type repositoryCreationTemplateArgs struct { + // Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + AppliedFors []string `pulumi:"appliedFors"` + // A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + CustomRoleArn *string `pulumi:"customRoleArn"` + // The description for this template. + Description *string `pulumi:"description"` + // Encryption configuration for any created repositories. See below for schema. + EncryptionConfigurations []RepositoryCreationTemplateEncryptionConfiguration `pulumi:"encryptionConfigurations"` + // The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + ImageTagMutability *string `pulumi:"imageTagMutability"` + // The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `ecr.getLifecyclePolicyDocument` dataSource to generate/manage the JSON document used for the `lifecyclePolicy` argument. + LifecyclePolicy *string `pulumi:"lifecyclePolicy"` + // The repository name prefix to match against. + Prefix string `pulumi:"prefix"` + RepositoryPolicy *string `pulumi:"repositoryPolicy"` + // A map of tags to assign to any created repositories. + ResourceTags map[string]string `pulumi:"resourceTags"` +} + +// The set of arguments for constructing a RepositoryCreationTemplate resource. +type RepositoryCreationTemplateArgs struct { + // Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + AppliedFors pulumi.StringArrayInput + // A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + CustomRoleArn pulumi.StringPtrInput + // The description for this template. + Description pulumi.StringPtrInput + // Encryption configuration for any created repositories. See below for schema. + EncryptionConfigurations RepositoryCreationTemplateEncryptionConfigurationArrayInput + // The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + ImageTagMutability pulumi.StringPtrInput + // The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `ecr.getLifecyclePolicyDocument` dataSource to generate/manage the JSON document used for the `lifecyclePolicy` argument. + LifecyclePolicy pulumi.StringPtrInput + // The repository name prefix to match against. + Prefix pulumi.StringInput + RepositoryPolicy pulumi.StringPtrInput + // A map of tags to assign to any created repositories. + ResourceTags pulumi.StringMapInput +} + +func (RepositoryCreationTemplateArgs) ElementType() reflect.Type { + return reflect.TypeOf((*repositoryCreationTemplateArgs)(nil)).Elem() +} + +type RepositoryCreationTemplateInput interface { + pulumi.Input + + ToRepositoryCreationTemplateOutput() RepositoryCreationTemplateOutput + ToRepositoryCreationTemplateOutputWithContext(ctx context.Context) RepositoryCreationTemplateOutput +} + +func (*RepositoryCreationTemplate) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryCreationTemplate)(nil)).Elem() +} + +func (i *RepositoryCreationTemplate) ToRepositoryCreationTemplateOutput() RepositoryCreationTemplateOutput { + return i.ToRepositoryCreationTemplateOutputWithContext(context.Background()) +} + +func (i *RepositoryCreationTemplate) ToRepositoryCreationTemplateOutputWithContext(ctx context.Context) RepositoryCreationTemplateOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryCreationTemplateOutput) +} + +// RepositoryCreationTemplateArrayInput is an input type that accepts RepositoryCreationTemplateArray and RepositoryCreationTemplateArrayOutput values. +// You can construct a concrete instance of `RepositoryCreationTemplateArrayInput` via: +// +// RepositoryCreationTemplateArray{ RepositoryCreationTemplateArgs{...} } +type RepositoryCreationTemplateArrayInput interface { + pulumi.Input + + ToRepositoryCreationTemplateArrayOutput() RepositoryCreationTemplateArrayOutput + ToRepositoryCreationTemplateArrayOutputWithContext(context.Context) RepositoryCreationTemplateArrayOutput +} + +type RepositoryCreationTemplateArray []RepositoryCreationTemplateInput + +func (RepositoryCreationTemplateArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RepositoryCreationTemplate)(nil)).Elem() +} + +func (i RepositoryCreationTemplateArray) ToRepositoryCreationTemplateArrayOutput() RepositoryCreationTemplateArrayOutput { + return i.ToRepositoryCreationTemplateArrayOutputWithContext(context.Background()) +} + +func (i RepositoryCreationTemplateArray) ToRepositoryCreationTemplateArrayOutputWithContext(ctx context.Context) RepositoryCreationTemplateArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryCreationTemplateArrayOutput) +} + +// RepositoryCreationTemplateMapInput is an input type that accepts RepositoryCreationTemplateMap and RepositoryCreationTemplateMapOutput values. +// You can construct a concrete instance of `RepositoryCreationTemplateMapInput` via: +// +// RepositoryCreationTemplateMap{ "key": RepositoryCreationTemplateArgs{...} } +type RepositoryCreationTemplateMapInput interface { + pulumi.Input + + ToRepositoryCreationTemplateMapOutput() RepositoryCreationTemplateMapOutput + ToRepositoryCreationTemplateMapOutputWithContext(context.Context) RepositoryCreationTemplateMapOutput +} + +type RepositoryCreationTemplateMap map[string]RepositoryCreationTemplateInput + +func (RepositoryCreationTemplateMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RepositoryCreationTemplate)(nil)).Elem() +} + +func (i RepositoryCreationTemplateMap) ToRepositoryCreationTemplateMapOutput() RepositoryCreationTemplateMapOutput { + return i.ToRepositoryCreationTemplateMapOutputWithContext(context.Background()) +} + +func (i RepositoryCreationTemplateMap) ToRepositoryCreationTemplateMapOutputWithContext(ctx context.Context) RepositoryCreationTemplateMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryCreationTemplateMapOutput) +} + +type RepositoryCreationTemplateOutput struct{ *pulumi.OutputState } + +func (RepositoryCreationTemplateOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryCreationTemplate)(nil)).Elem() +} + +func (o RepositoryCreationTemplateOutput) ToRepositoryCreationTemplateOutput() RepositoryCreationTemplateOutput { + return o +} + +func (o RepositoryCreationTemplateOutput) ToRepositoryCreationTemplateOutputWithContext(ctx context.Context) RepositoryCreationTemplateOutput { + return o +} + +// Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. +func (o RepositoryCreationTemplateOutput) AppliedFors() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RepositoryCreationTemplate) pulumi.StringArrayOutput { return v.AppliedFors }).(pulumi.StringArrayOutput) +} + +// A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. +func (o RepositoryCreationTemplateOutput) CustomRoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RepositoryCreationTemplate) pulumi.StringPtrOutput { return v.CustomRoleArn }).(pulumi.StringPtrOutput) +} + +// The description for this template. +func (o RepositoryCreationTemplateOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RepositoryCreationTemplate) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// Encryption configuration for any created repositories. See below for schema. +func (o RepositoryCreationTemplateOutput) EncryptionConfigurations() RepositoryCreationTemplateEncryptionConfigurationArrayOutput { + return o.ApplyT(func(v *RepositoryCreationTemplate) RepositoryCreationTemplateEncryptionConfigurationArrayOutput { + return v.EncryptionConfigurations + }).(RepositoryCreationTemplateEncryptionConfigurationArrayOutput) +} + +// The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. +func (o RepositoryCreationTemplateOutput) ImageTagMutability() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RepositoryCreationTemplate) pulumi.StringPtrOutput { return v.ImageTagMutability }).(pulumi.StringPtrOutput) +} + +// The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `ecr.getLifecyclePolicyDocument` dataSource to generate/manage the JSON document used for the `lifecyclePolicy` argument. +func (o RepositoryCreationTemplateOutput) LifecyclePolicy() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RepositoryCreationTemplate) pulumi.StringPtrOutput { return v.LifecyclePolicy }).(pulumi.StringPtrOutput) +} + +// The repository name prefix to match against. +func (o RepositoryCreationTemplateOutput) Prefix() pulumi.StringOutput { + return o.ApplyT(func(v *RepositoryCreationTemplate) pulumi.StringOutput { return v.Prefix }).(pulumi.StringOutput) +} + +// The registry ID the repository creation template applies to. +func (o RepositoryCreationTemplateOutput) RegistryId() pulumi.StringOutput { + return o.ApplyT(func(v *RepositoryCreationTemplate) pulumi.StringOutput { return v.RegistryId }).(pulumi.StringOutput) +} + +func (o RepositoryCreationTemplateOutput) RepositoryPolicy() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RepositoryCreationTemplate) pulumi.StringPtrOutput { return v.RepositoryPolicy }).(pulumi.StringPtrOutput) +} + +// A map of tags to assign to any created repositories. +func (o RepositoryCreationTemplateOutput) ResourceTags() pulumi.StringMapOutput { + return o.ApplyT(func(v *RepositoryCreationTemplate) pulumi.StringMapOutput { return v.ResourceTags }).(pulumi.StringMapOutput) +} + +type RepositoryCreationTemplateArrayOutput struct{ *pulumi.OutputState } + +func (RepositoryCreationTemplateArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RepositoryCreationTemplate)(nil)).Elem() +} + +func (o RepositoryCreationTemplateArrayOutput) ToRepositoryCreationTemplateArrayOutput() RepositoryCreationTemplateArrayOutput { + return o +} + +func (o RepositoryCreationTemplateArrayOutput) ToRepositoryCreationTemplateArrayOutputWithContext(ctx context.Context) RepositoryCreationTemplateArrayOutput { + return o +} + +func (o RepositoryCreationTemplateArrayOutput) Index(i pulumi.IntInput) RepositoryCreationTemplateOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *RepositoryCreationTemplate { + return vs[0].([]*RepositoryCreationTemplate)[vs[1].(int)] + }).(RepositoryCreationTemplateOutput) +} + +type RepositoryCreationTemplateMapOutput struct{ *pulumi.OutputState } + +func (RepositoryCreationTemplateMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RepositoryCreationTemplate)(nil)).Elem() +} + +func (o RepositoryCreationTemplateMapOutput) ToRepositoryCreationTemplateMapOutput() RepositoryCreationTemplateMapOutput { + return o +} + +func (o RepositoryCreationTemplateMapOutput) ToRepositoryCreationTemplateMapOutputWithContext(ctx context.Context) RepositoryCreationTemplateMapOutput { + return o +} + +func (o RepositoryCreationTemplateMapOutput) MapIndex(k pulumi.StringInput) RepositoryCreationTemplateOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *RepositoryCreationTemplate { + return vs[0].(map[string]*RepositoryCreationTemplate)[vs[1].(string)] + }).(RepositoryCreationTemplateOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryCreationTemplateInput)(nil)).Elem(), &RepositoryCreationTemplate{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryCreationTemplateArrayInput)(nil)).Elem(), RepositoryCreationTemplateArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryCreationTemplateMapInput)(nil)).Elem(), RepositoryCreationTemplateMap{}) + pulumi.RegisterOutputType(RepositoryCreationTemplateOutput{}) + pulumi.RegisterOutputType(RepositoryCreationTemplateArrayOutput{}) + pulumi.RegisterOutputType(RepositoryCreationTemplateMapOutput{}) +} diff --git a/sdk/go/aws/eks/cluster.go b/sdk/go/aws/eks/cluster.go index af2a8acd868..2e51571e645 100644 --- a/sdk/go/aws/eks/cluster.go +++ b/sdk/go/aws/eks/cluster.go @@ -408,6 +408,8 @@ type Cluster struct { // // Deprecated: Please use `tags` instead. TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // Configuration block for the support policy to use for the cluster. See upgradePolicy for details. + UpgradePolicy ClusterUpgradePolicyOutput `pulumi:"upgradePolicy"` // Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. Version pulumi.StringOutput `pulumi:"version"` // Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section. @@ -492,6 +494,8 @@ type clusterState struct { // // Deprecated: Please use `tags` instead. TagsAll map[string]string `pulumi:"tagsAll"` + // Configuration block for the support policy to use for the cluster. See upgradePolicy for details. + UpgradePolicy *ClusterUpgradePolicy `pulumi:"upgradePolicy"` // Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. Version *string `pulumi:"version"` // Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section. @@ -541,6 +545,8 @@ type ClusterState struct { // // Deprecated: Please use `tags` instead. TagsAll pulumi.StringMapInput + // Configuration block for the support policy to use for the cluster. See upgradePolicy for details. + UpgradePolicy ClusterUpgradePolicyPtrInput // Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. Version pulumi.StringPtrInput // Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section. @@ -573,6 +579,8 @@ type clusterArgs struct { RoleArn string `pulumi:"roleArn"` // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. Tags map[string]string `pulumi:"tags"` + // Configuration block for the support policy to use for the cluster. See upgradePolicy for details. + UpgradePolicy *ClusterUpgradePolicy `pulumi:"upgradePolicy"` // Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. Version *string `pulumi:"version"` // Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section. @@ -602,6 +610,8 @@ type ClusterArgs struct { RoleArn pulumi.StringInput // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. Tags pulumi.StringMapInput + // Configuration block for the support policy to use for the cluster. See upgradePolicy for details. + UpgradePolicy ClusterUpgradePolicyPtrInput // Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. Version pulumi.StringPtrInput // Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section. @@ -797,6 +807,11 @@ func (o ClusterOutput) TagsAll() pulumi.StringMapOutput { return o.ApplyT(func(v *Cluster) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) } +// Configuration block for the support policy to use for the cluster. See upgradePolicy for details. +func (o ClusterOutput) UpgradePolicy() ClusterUpgradePolicyOutput { + return o.ApplyT(func(v *Cluster) ClusterUpgradePolicyOutput { return v.UpgradePolicy }).(ClusterUpgradePolicyOutput) +} + // Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. func (o ClusterOutput) Version() pulumi.StringOutput { return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.Version }).(pulumi.StringOutput) diff --git a/sdk/go/aws/eks/getCluster.go b/sdk/go/aws/eks/getCluster.go index 117c453b9a7..23327b37234 100644 --- a/sdk/go/aws/eks/getCluster.go +++ b/sdk/go/aws/eks/getCluster.go @@ -92,6 +92,8 @@ type LookupClusterResult struct { Status string `pulumi:"status"` // Key-value map of resource tags. Tags map[string]string `pulumi:"tags"` + // (Optional) Configuration block for the support policy to use for the cluster. + UpgradePolicies []GetClusterUpgradePolicy `pulumi:"upgradePolicies"` // Kubernetes server version for the cluster. Version string `pulumi:"version"` // Nested list containing VPC configuration for the cluster. @@ -217,6 +219,11 @@ func (o LookupClusterResultOutput) Tags() pulumi.StringMapOutput { return o.ApplyT(func(v LookupClusterResult) map[string]string { return v.Tags }).(pulumi.StringMapOutput) } +// (Optional) Configuration block for the support policy to use for the cluster. +func (o LookupClusterResultOutput) UpgradePolicies() GetClusterUpgradePolicyArrayOutput { + return o.ApplyT(func(v LookupClusterResult) []GetClusterUpgradePolicy { return v.UpgradePolicies }).(GetClusterUpgradePolicyArrayOutput) +} + // Kubernetes server version for the cluster. func (o LookupClusterResultOutput) Version() pulumi.StringOutput { return o.ApplyT(func(v LookupClusterResult) string { return v.Version }).(pulumi.StringOutput) diff --git a/sdk/go/aws/eks/pulumiTypes.go b/sdk/go/aws/eks/pulumiTypes.go index efddf942413..302f0e48f09 100644 --- a/sdk/go/aws/eks/pulumiTypes.go +++ b/sdk/go/aws/eks/pulumiTypes.go @@ -1543,6 +1543,143 @@ func (o ClusterOutpostConfigControlPlanePlacementPtrOutput) GroupName() pulumi.S }).(pulumi.StringPtrOutput) } +type ClusterUpgradePolicy struct { + // Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + SupportType *string `pulumi:"supportType"` +} + +// ClusterUpgradePolicyInput is an input type that accepts ClusterUpgradePolicyArgs and ClusterUpgradePolicyOutput values. +// You can construct a concrete instance of `ClusterUpgradePolicyInput` via: +// +// ClusterUpgradePolicyArgs{...} +type ClusterUpgradePolicyInput interface { + pulumi.Input + + ToClusterUpgradePolicyOutput() ClusterUpgradePolicyOutput + ToClusterUpgradePolicyOutputWithContext(context.Context) ClusterUpgradePolicyOutput +} + +type ClusterUpgradePolicyArgs struct { + // Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + SupportType pulumi.StringPtrInput `pulumi:"supportType"` +} + +func (ClusterUpgradePolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterUpgradePolicy)(nil)).Elem() +} + +func (i ClusterUpgradePolicyArgs) ToClusterUpgradePolicyOutput() ClusterUpgradePolicyOutput { + return i.ToClusterUpgradePolicyOutputWithContext(context.Background()) +} + +func (i ClusterUpgradePolicyArgs) ToClusterUpgradePolicyOutputWithContext(ctx context.Context) ClusterUpgradePolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterUpgradePolicyOutput) +} + +func (i ClusterUpgradePolicyArgs) ToClusterUpgradePolicyPtrOutput() ClusterUpgradePolicyPtrOutput { + return i.ToClusterUpgradePolicyPtrOutputWithContext(context.Background()) +} + +func (i ClusterUpgradePolicyArgs) ToClusterUpgradePolicyPtrOutputWithContext(ctx context.Context) ClusterUpgradePolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterUpgradePolicyOutput).ToClusterUpgradePolicyPtrOutputWithContext(ctx) +} + +// ClusterUpgradePolicyPtrInput is an input type that accepts ClusterUpgradePolicyArgs, ClusterUpgradePolicyPtr and ClusterUpgradePolicyPtrOutput values. +// You can construct a concrete instance of `ClusterUpgradePolicyPtrInput` via: +// +// ClusterUpgradePolicyArgs{...} +// +// or: +// +// nil +type ClusterUpgradePolicyPtrInput interface { + pulumi.Input + + ToClusterUpgradePolicyPtrOutput() ClusterUpgradePolicyPtrOutput + ToClusterUpgradePolicyPtrOutputWithContext(context.Context) ClusterUpgradePolicyPtrOutput +} + +type clusterUpgradePolicyPtrType ClusterUpgradePolicyArgs + +func ClusterUpgradePolicyPtr(v *ClusterUpgradePolicyArgs) ClusterUpgradePolicyPtrInput { + return (*clusterUpgradePolicyPtrType)(v) +} + +func (*clusterUpgradePolicyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterUpgradePolicy)(nil)).Elem() +} + +func (i *clusterUpgradePolicyPtrType) ToClusterUpgradePolicyPtrOutput() ClusterUpgradePolicyPtrOutput { + return i.ToClusterUpgradePolicyPtrOutputWithContext(context.Background()) +} + +func (i *clusterUpgradePolicyPtrType) ToClusterUpgradePolicyPtrOutputWithContext(ctx context.Context) ClusterUpgradePolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterUpgradePolicyPtrOutput) +} + +type ClusterUpgradePolicyOutput struct{ *pulumi.OutputState } + +func (ClusterUpgradePolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterUpgradePolicy)(nil)).Elem() +} + +func (o ClusterUpgradePolicyOutput) ToClusterUpgradePolicyOutput() ClusterUpgradePolicyOutput { + return o +} + +func (o ClusterUpgradePolicyOutput) ToClusterUpgradePolicyOutputWithContext(ctx context.Context) ClusterUpgradePolicyOutput { + return o +} + +func (o ClusterUpgradePolicyOutput) ToClusterUpgradePolicyPtrOutput() ClusterUpgradePolicyPtrOutput { + return o.ToClusterUpgradePolicyPtrOutputWithContext(context.Background()) +} + +func (o ClusterUpgradePolicyOutput) ToClusterUpgradePolicyPtrOutputWithContext(ctx context.Context) ClusterUpgradePolicyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterUpgradePolicy) *ClusterUpgradePolicy { + return &v + }).(ClusterUpgradePolicyPtrOutput) +} + +// Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` +func (o ClusterUpgradePolicyOutput) SupportType() pulumi.StringPtrOutput { + return o.ApplyT(func(v ClusterUpgradePolicy) *string { return v.SupportType }).(pulumi.StringPtrOutput) +} + +type ClusterUpgradePolicyPtrOutput struct{ *pulumi.OutputState } + +func (ClusterUpgradePolicyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterUpgradePolicy)(nil)).Elem() +} + +func (o ClusterUpgradePolicyPtrOutput) ToClusterUpgradePolicyPtrOutput() ClusterUpgradePolicyPtrOutput { + return o +} + +func (o ClusterUpgradePolicyPtrOutput) ToClusterUpgradePolicyPtrOutputWithContext(ctx context.Context) ClusterUpgradePolicyPtrOutput { + return o +} + +func (o ClusterUpgradePolicyPtrOutput) Elem() ClusterUpgradePolicyOutput { + return o.ApplyT(func(v *ClusterUpgradePolicy) ClusterUpgradePolicy { + if v != nil { + return *v + } + var ret ClusterUpgradePolicy + return ret + }).(ClusterUpgradePolicyOutput) +} + +// Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` +func (o ClusterUpgradePolicyPtrOutput) SupportType() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ClusterUpgradePolicy) *string { + if v == nil { + return nil + } + return v.SupportType + }).(pulumi.StringPtrOutput) +} + type ClusterVpcConfig struct { // Cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control-plane-to-data-plane communication. ClusterSecurityGroupId *string `pulumi:"clusterSecurityGroupId"` @@ -3882,6 +4019,103 @@ func (o GetClusterOutpostConfigControlPlanePlacementArrayOutput) Index(i pulumi. }).(GetClusterOutpostConfigControlPlanePlacementOutput) } +type GetClusterUpgradePolicy struct { + // (Optional) Support type to use for the cluster. + SupportType string `pulumi:"supportType"` +} + +// GetClusterUpgradePolicyInput is an input type that accepts GetClusterUpgradePolicyArgs and GetClusterUpgradePolicyOutput values. +// You can construct a concrete instance of `GetClusterUpgradePolicyInput` via: +// +// GetClusterUpgradePolicyArgs{...} +type GetClusterUpgradePolicyInput interface { + pulumi.Input + + ToGetClusterUpgradePolicyOutput() GetClusterUpgradePolicyOutput + ToGetClusterUpgradePolicyOutputWithContext(context.Context) GetClusterUpgradePolicyOutput +} + +type GetClusterUpgradePolicyArgs struct { + // (Optional) Support type to use for the cluster. + SupportType pulumi.StringInput `pulumi:"supportType"` +} + +func (GetClusterUpgradePolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetClusterUpgradePolicy)(nil)).Elem() +} + +func (i GetClusterUpgradePolicyArgs) ToGetClusterUpgradePolicyOutput() GetClusterUpgradePolicyOutput { + return i.ToGetClusterUpgradePolicyOutputWithContext(context.Background()) +} + +func (i GetClusterUpgradePolicyArgs) ToGetClusterUpgradePolicyOutputWithContext(ctx context.Context) GetClusterUpgradePolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetClusterUpgradePolicyOutput) +} + +// GetClusterUpgradePolicyArrayInput is an input type that accepts GetClusterUpgradePolicyArray and GetClusterUpgradePolicyArrayOutput values. +// You can construct a concrete instance of `GetClusterUpgradePolicyArrayInput` via: +// +// GetClusterUpgradePolicyArray{ GetClusterUpgradePolicyArgs{...} } +type GetClusterUpgradePolicyArrayInput interface { + pulumi.Input + + ToGetClusterUpgradePolicyArrayOutput() GetClusterUpgradePolicyArrayOutput + ToGetClusterUpgradePolicyArrayOutputWithContext(context.Context) GetClusterUpgradePolicyArrayOutput +} + +type GetClusterUpgradePolicyArray []GetClusterUpgradePolicyInput + +func (GetClusterUpgradePolicyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetClusterUpgradePolicy)(nil)).Elem() +} + +func (i GetClusterUpgradePolicyArray) ToGetClusterUpgradePolicyArrayOutput() GetClusterUpgradePolicyArrayOutput { + return i.ToGetClusterUpgradePolicyArrayOutputWithContext(context.Background()) +} + +func (i GetClusterUpgradePolicyArray) ToGetClusterUpgradePolicyArrayOutputWithContext(ctx context.Context) GetClusterUpgradePolicyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetClusterUpgradePolicyArrayOutput) +} + +type GetClusterUpgradePolicyOutput struct{ *pulumi.OutputState } + +func (GetClusterUpgradePolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetClusterUpgradePolicy)(nil)).Elem() +} + +func (o GetClusterUpgradePolicyOutput) ToGetClusterUpgradePolicyOutput() GetClusterUpgradePolicyOutput { + return o +} + +func (o GetClusterUpgradePolicyOutput) ToGetClusterUpgradePolicyOutputWithContext(ctx context.Context) GetClusterUpgradePolicyOutput { + return o +} + +// (Optional) Support type to use for the cluster. +func (o GetClusterUpgradePolicyOutput) SupportType() pulumi.StringOutput { + return o.ApplyT(func(v GetClusterUpgradePolicy) string { return v.SupportType }).(pulumi.StringOutput) +} + +type GetClusterUpgradePolicyArrayOutput struct{ *pulumi.OutputState } + +func (GetClusterUpgradePolicyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetClusterUpgradePolicy)(nil)).Elem() +} + +func (o GetClusterUpgradePolicyArrayOutput) ToGetClusterUpgradePolicyArrayOutput() GetClusterUpgradePolicyArrayOutput { + return o +} + +func (o GetClusterUpgradePolicyArrayOutput) ToGetClusterUpgradePolicyArrayOutputWithContext(ctx context.Context) GetClusterUpgradePolicyArrayOutput { + return o +} + +func (o GetClusterUpgradePolicyArrayOutput) Index(i pulumi.IntInput) GetClusterUpgradePolicyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetClusterUpgradePolicy { + return vs[0].([]GetClusterUpgradePolicy)[vs[1].(int)] + }).(GetClusterUpgradePolicyOutput) +} + type GetClusterVpcConfig struct { // The cluster security group that was created by Amazon EKS for the cluster. ClusterSecurityGroupId string `pulumi:"clusterSecurityGroupId"` @@ -4664,6 +4898,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*ClusterOutpostConfigPtrInput)(nil)).Elem(), ClusterOutpostConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ClusterOutpostConfigControlPlanePlacementInput)(nil)).Elem(), ClusterOutpostConfigControlPlanePlacementArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ClusterOutpostConfigControlPlanePlacementPtrInput)(nil)).Elem(), ClusterOutpostConfigControlPlanePlacementArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterUpgradePolicyInput)(nil)).Elem(), ClusterUpgradePolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterUpgradePolicyPtrInput)(nil)).Elem(), ClusterUpgradePolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ClusterVpcConfigInput)(nil)).Elem(), ClusterVpcConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ClusterVpcConfigPtrInput)(nil)).Elem(), ClusterVpcConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*FargateProfileSelectorInput)(nil)).Elem(), FargateProfileSelectorArgs{}) @@ -4698,6 +4934,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetClusterOutpostConfigArrayInput)(nil)).Elem(), GetClusterOutpostConfigArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetClusterOutpostConfigControlPlanePlacementInput)(nil)).Elem(), GetClusterOutpostConfigControlPlanePlacementArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetClusterOutpostConfigControlPlanePlacementArrayInput)(nil)).Elem(), GetClusterOutpostConfigControlPlanePlacementArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetClusterUpgradePolicyInput)(nil)).Elem(), GetClusterUpgradePolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetClusterUpgradePolicyArrayInput)(nil)).Elem(), GetClusterUpgradePolicyArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetClusterVpcConfigInput)(nil)).Elem(), GetClusterVpcConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetNodeGroupLaunchTemplateInput)(nil)).Elem(), GetNodeGroupLaunchTemplateArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetNodeGroupLaunchTemplateArrayInput)(nil)).Elem(), GetNodeGroupLaunchTemplateArray{}) @@ -4732,6 +4970,8 @@ func init() { pulumi.RegisterOutputType(ClusterOutpostConfigPtrOutput{}) pulumi.RegisterOutputType(ClusterOutpostConfigControlPlanePlacementOutput{}) pulumi.RegisterOutputType(ClusterOutpostConfigControlPlanePlacementPtrOutput{}) + pulumi.RegisterOutputType(ClusterUpgradePolicyOutput{}) + pulumi.RegisterOutputType(ClusterUpgradePolicyPtrOutput{}) pulumi.RegisterOutputType(ClusterVpcConfigOutput{}) pulumi.RegisterOutputType(ClusterVpcConfigPtrOutput{}) pulumi.RegisterOutputType(FargateProfileSelectorOutput{}) @@ -4766,6 +5006,8 @@ func init() { pulumi.RegisterOutputType(GetClusterOutpostConfigArrayOutput{}) pulumi.RegisterOutputType(GetClusterOutpostConfigControlPlanePlacementOutput{}) pulumi.RegisterOutputType(GetClusterOutpostConfigControlPlanePlacementArrayOutput{}) + pulumi.RegisterOutputType(GetClusterUpgradePolicyOutput{}) + pulumi.RegisterOutputType(GetClusterUpgradePolicyArrayOutput{}) pulumi.RegisterOutputType(GetClusterVpcConfigOutput{}) pulumi.RegisterOutputType(GetNodeGroupLaunchTemplateOutput{}) pulumi.RegisterOutputType(GetNodeGroupLaunchTemplateArrayOutput{}) diff --git a/sdk/go/aws/elasticache/userGroupAssociation.go b/sdk/go/aws/elasticache/userGroupAssociation.go index c5a9e5db347..25bc3f6621b 100644 --- a/sdk/go/aws/elasticache/userGroupAssociation.go +++ b/sdk/go/aws/elasticache/userGroupAssociation.go @@ -12,10 +12,6 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) -// Associate an existing ElastiCache user and an existing user group. -// -// > **NOTE:** The provider will detect changes in the `elasticache.UserGroup` since `elasticache.UserGroupAssociation` changes the user IDs associated with the user group. You can ignore these changes with the `ignoreChanges` option as shown in the example. -// // ## Example Usage // // ```go diff --git a/sdk/go/aws/pipes/pipe.go b/sdk/go/aws/pipes/pipe.go index a84d4be075e..7b0641484cc 100644 --- a/sdk/go/aws/pipes/pipe.go +++ b/sdk/go/aws/pipes/pipe.go @@ -246,6 +246,54 @@ import ( // // ``` // +// ### CloudWatch Logs Logging Configuration Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/pipes" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewLogGroup(ctx, "example", &cloudwatch.LogGroupArgs{ +// Name: pulumi.String("example-pipe-target"), +// }) +// if err != nil { +// return err +// } +// _, err = pipes.NewPipe(ctx, "example", &pipes.PipeArgs{ +// Name: pulumi.String("example-pipe"), +// RoleArn: pulumi.Any(exampleAwsIamRole.Arn), +// Source: pulumi.Any(sourceAwsSqsQueue.Arn), +// Target: pulumi.Any(targetAwsSqsQueue.Arn), +// LogConfiguration: &pipes.PipeLogConfigurationArgs{ +// IncludeExecutionDatas: pulumi.StringArray{ +// pulumi.String("ALL"), +// }, +// Level: pulumi.String("INFO"), +// CloudwatchLogsLogDestination: &pipes.PipeLogConfigurationCloudwatchLogsLogDestinationArgs{ +// LogGroupArn: pulumi.Any(targetAwsCloudwatchLogGroup.Arn), +// }, +// }, +// }, pulumi.DependsOn([]pulumi.Resource{ +// source, +// target, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// // ## Import // // Using `pulumi import`, import pipes using the `name`. For example: diff --git a/sdk/go/aws/pipes/pulumiTypes.go b/sdk/go/aws/pipes/pulumiTypes.go index a0323008a04..880e9846dd6 100644 --- a/sdk/go/aws/pipes/pulumiTypes.go +++ b/sdk/go/aws/pipes/pulumiTypes.go @@ -337,6 +337,8 @@ type PipeLogConfiguration struct { CloudwatchLogsLogDestination *PipeLogConfigurationCloudwatchLogsLogDestination `pulumi:"cloudwatchLogsLogDestination"` // Amazon Kinesis Data Firehose logging configuration settings for the pipe. Detailed below. FirehoseLogDestination *PipeLogConfigurationFirehoseLogDestination `pulumi:"firehoseLogDestination"` + // String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + IncludeExecutionDatas []string `pulumi:"includeExecutionDatas"` // The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. Level string `pulumi:"level"` // Amazon S3 logging configuration settings for the pipe. Detailed below. @@ -359,6 +361,8 @@ type PipeLogConfigurationArgs struct { CloudwatchLogsLogDestination PipeLogConfigurationCloudwatchLogsLogDestinationPtrInput `pulumi:"cloudwatchLogsLogDestination"` // Amazon Kinesis Data Firehose logging configuration settings for the pipe. Detailed below. FirehoseLogDestination PipeLogConfigurationFirehoseLogDestinationPtrInput `pulumi:"firehoseLogDestination"` + // String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + IncludeExecutionDatas pulumi.StringArrayInput `pulumi:"includeExecutionDatas"` // The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. Level pulumi.StringInput `pulumi:"level"` // Amazon S3 logging configuration settings for the pipe. Detailed below. @@ -456,6 +460,11 @@ func (o PipeLogConfigurationOutput) FirehoseLogDestination() PipeLogConfiguratio }).(PipeLogConfigurationFirehoseLogDestinationPtrOutput) } +// String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. +func (o PipeLogConfigurationOutput) IncludeExecutionDatas() pulumi.StringArrayOutput { + return o.ApplyT(func(v PipeLogConfiguration) []string { return v.IncludeExecutionDatas }).(pulumi.StringArrayOutput) +} + // The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. func (o PipeLogConfigurationOutput) Level() pulumi.StringOutput { return o.ApplyT(func(v PipeLogConfiguration) string { return v.Level }).(pulumi.StringOutput) @@ -510,6 +519,16 @@ func (o PipeLogConfigurationPtrOutput) FirehoseLogDestination() PipeLogConfigura }).(PipeLogConfigurationFirehoseLogDestinationPtrOutput) } +// String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. +func (o PipeLogConfigurationPtrOutput) IncludeExecutionDatas() pulumi.StringArrayOutput { + return o.ApplyT(func(v *PipeLogConfiguration) []string { + if v == nil { + return nil + } + return v.IncludeExecutionDatas + }).(pulumi.StringArrayOutput) +} + // The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. func (o PipeLogConfigurationPtrOutput) Level() pulumi.StringPtrOutput { return o.ApplyT(func(v *PipeLogConfiguration) *string { diff --git a/sdk/go/aws/pulumiTypes.go b/sdk/go/aws/pulumiTypes.go index e4dc8aa43b6..a077de9dc7f 100644 --- a/sdk/go/aws/pulumiTypes.go +++ b/sdk/go/aws/pulumiTypes.go @@ -1130,6 +1130,8 @@ type ProviderEndpoint struct { // Use this to override the default service endpoint URL Rekognition *string `pulumi:"rekognition"` // Use this to override the default service endpoint URL + Resiliencehub *string `pulumi:"resiliencehub"` + // Use this to override the default service endpoint URL Resourceexplorer2 *string `pulumi:"resourceexplorer2"` // Use this to override the default service endpoint URL Resourcegroups *string `pulumi:"resourcegroups"` @@ -1718,6 +1720,8 @@ type ProviderEndpointArgs struct { // Use this to override the default service endpoint URL Rekognition pulumi.StringPtrInput `pulumi:"rekognition"` // Use this to override the default service endpoint URL + Resiliencehub pulumi.StringPtrInput `pulumi:"resiliencehub"` + // Use this to override the default service endpoint URL Resourceexplorer2 pulumi.StringPtrInput `pulumi:"resourceexplorer2"` // Use this to override the default service endpoint URL Resourcegroups pulumi.StringPtrInput `pulumi:"resourcegroups"` @@ -3013,6 +3017,11 @@ func (o ProviderEndpointOutput) Rekognition() pulumi.StringPtrOutput { return o.ApplyT(func(v ProviderEndpoint) *string { return v.Rekognition }).(pulumi.StringPtrOutput) } +// Use this to override the default service endpoint URL +func (o ProviderEndpointOutput) Resiliencehub() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderEndpoint) *string { return v.Resiliencehub }).(pulumi.StringPtrOutput) +} + // Use this to override the default service endpoint URL func (o ProviderEndpointOutput) Resourceexplorer2() pulumi.StringPtrOutput { return o.ApplyT(func(v ProviderEndpoint) *string { return v.Resourceexplorer2 }).(pulumi.StringPtrOutput) diff --git a/sdk/go/aws/rds/cluster.go b/sdk/go/aws/rds/cluster.go index d45b72c709d..1a7d67e4e8d 100644 --- a/sdk/go/aws/rds/cluster.go +++ b/sdk/go/aws/rds/cluster.go @@ -463,11 +463,17 @@ type Cluster struct { MasterUsername pulumi.StringOutput `pulumi:"masterUsername"` // Network type of the cluster. Valid values: `IPV4`, `DUAL`. NetworkType pulumi.StringOutput `pulumi:"networkType"` - // Port on which the DB accepts connections + // Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + PerformanceInsightsEnabled pulumi.BoolPtrOutput `pulumi:"performanceInsightsEnabled"` + // Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + PerformanceInsightsKmsKeyId pulumi.StringOutput `pulumi:"performanceInsightsKmsKeyId"` + // Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + PerformanceInsightsRetentionPeriod pulumi.IntOutput `pulumi:"performanceInsightsRetentionPeriod"` + // Port on which the DB accepts connections. Port pulumi.IntOutput `pulumi:"port"` - // Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + // Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. PreferredBackupWindow pulumi.StringOutput `pulumi:"preferredBackupWindow"` - // Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + // Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` PreferredMaintenanceWindow pulumi.StringOutput `pulumi:"preferredMaintenanceWindow"` // Read-only endpoint for the Aurora cluster, automatically // load-balanced across replicas @@ -641,11 +647,17 @@ type clusterState struct { MasterUsername *string `pulumi:"masterUsername"` // Network type of the cluster. Valid values: `IPV4`, `DUAL`. NetworkType *string `pulumi:"networkType"` - // Port on which the DB accepts connections + // Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + PerformanceInsightsEnabled *bool `pulumi:"performanceInsightsEnabled"` + // Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + PerformanceInsightsKmsKeyId *string `pulumi:"performanceInsightsKmsKeyId"` + // Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + PerformanceInsightsRetentionPeriod *int `pulumi:"performanceInsightsRetentionPeriod"` + // Port on which the DB accepts connections. Port *int `pulumi:"port"` - // Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + // Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. PreferredBackupWindow *string `pulumi:"preferredBackupWindow"` - // Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + // Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` PreferredMaintenanceWindow *string `pulumi:"preferredMaintenanceWindow"` // Read-only endpoint for the Aurora cluster, automatically // load-balanced across replicas @@ -780,11 +792,17 @@ type ClusterState struct { MasterUsername pulumi.StringPtrInput // Network type of the cluster. Valid values: `IPV4`, `DUAL`. NetworkType pulumi.StringPtrInput - // Port on which the DB accepts connections + // Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + PerformanceInsightsEnabled pulumi.BoolPtrInput + // Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + PerformanceInsightsKmsKeyId pulumi.StringPtrInput + // Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + PerformanceInsightsRetentionPeriod pulumi.IntPtrInput + // Port on which the DB accepts connections. Port pulumi.IntPtrInput - // Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + // Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. PreferredBackupWindow pulumi.StringPtrInput - // Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + // Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` PreferredMaintenanceWindow pulumi.StringPtrInput // Read-only endpoint for the Aurora cluster, automatically // load-balanced across replicas @@ -909,11 +927,17 @@ type clusterArgs struct { MasterUsername *string `pulumi:"masterUsername"` // Network type of the cluster. Valid values: `IPV4`, `DUAL`. NetworkType *string `pulumi:"networkType"` - // Port on which the DB accepts connections + // Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + PerformanceInsightsEnabled *bool `pulumi:"performanceInsightsEnabled"` + // Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + PerformanceInsightsKmsKeyId *string `pulumi:"performanceInsightsKmsKeyId"` + // Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + PerformanceInsightsRetentionPeriod *int `pulumi:"performanceInsightsRetentionPeriod"` + // Port on which the DB accepts connections. Port *int `pulumi:"port"` - // Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + // Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. PreferredBackupWindow *string `pulumi:"preferredBackupWindow"` - // Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + // Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` PreferredMaintenanceWindow *string `pulumi:"preferredMaintenanceWindow"` // ARN of a source DB cluster or DB instance if this DB cluster is to be created as a Read Replica. If DB Cluster is part of a Global Cluster, use the `lifecycle` configuration block `ignoreChanges` argument to prevent this provider from showing differences for this argument instead of configuring this value. ReplicationSourceIdentifier *string `pulumi:"replicationSourceIdentifier"` @@ -1028,11 +1052,17 @@ type ClusterArgs struct { MasterUsername pulumi.StringPtrInput // Network type of the cluster. Valid values: `IPV4`, `DUAL`. NetworkType pulumi.StringPtrInput - // Port on which the DB accepts connections + // Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + PerformanceInsightsEnabled pulumi.BoolPtrInput + // Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + PerformanceInsightsKmsKeyId pulumi.StringPtrInput + // Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + PerformanceInsightsRetentionPeriod pulumi.IntPtrInput + // Port on which the DB accepts connections. Port pulumi.IntPtrInput - // Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + // Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. PreferredBackupWindow pulumi.StringPtrInput - // Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + // Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` PreferredMaintenanceWindow pulumi.StringPtrInput // ARN of a source DB cluster or DB instance if this DB cluster is to be created as a Read Replica. If DB Cluster is part of a Global Cluster, use the `lifecycle` configuration block `ignoreChanges` argument to prevent this provider from showing differences for this argument instead of configuring this value. ReplicationSourceIdentifier pulumi.StringPtrInput @@ -1387,17 +1417,32 @@ func (o ClusterOutput) NetworkType() pulumi.StringOutput { return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.NetworkType }).(pulumi.StringOutput) } -// Port on which the DB accepts connections +// Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster +func (o ClusterOutput) PerformanceInsightsEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Cluster) pulumi.BoolPtrOutput { return v.PerformanceInsightsEnabled }).(pulumi.BoolPtrOutput) +} + +// Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). +func (o ClusterOutput) PerformanceInsightsKmsKeyId() pulumi.StringOutput { + return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.PerformanceInsightsKmsKeyId }).(pulumi.StringOutput) +} + +// Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. +func (o ClusterOutput) PerformanceInsightsRetentionPeriod() pulumi.IntOutput { + return o.ApplyT(func(v *Cluster) pulumi.IntOutput { return v.PerformanceInsightsRetentionPeriod }).(pulumi.IntOutput) +} + +// Port on which the DB accepts connections. func (o ClusterOutput) Port() pulumi.IntOutput { return o.ApplyT(func(v *Cluster) pulumi.IntOutput { return v.Port }).(pulumi.IntOutput) } -// Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 +// Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. func (o ClusterOutput) PreferredBackupWindow() pulumi.StringOutput { return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.PreferredBackupWindow }).(pulumi.StringOutput) } -// Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 +// Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` func (o ClusterOutput) PreferredMaintenanceWindow() pulumi.StringOutput { return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.PreferredMaintenanceWindow }).(pulumi.StringOutput) } diff --git a/sdk/go/aws/rds/instance.go b/sdk/go/aws/rds/instance.go index 342d40a7f18..d6ea98ff58c 100644 --- a/sdk/go/aws/rds/instance.go +++ b/sdk/go/aws/rds/instance.go @@ -661,6 +661,8 @@ type Instance struct { // Guide](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone) // for more information. Timezone pulumi.StringOutput `pulumi:"timezone"` + // Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicateSourceDb`. + UpgradeStorageConfig pulumi.BoolPtrOutput `pulumi:"upgradeStorageConfig"` // (Required unless a `snapshotIdentifier` or `replicateSourceDb` // is provided) Username for the master DB user. Cannot be specified for a replica. Username pulumi.StringOutput `pulumi:"username"` @@ -946,6 +948,8 @@ type instanceState struct { // Guide](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone) // for more information. Timezone *string `pulumi:"timezone"` + // Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicateSourceDb`. + UpgradeStorageConfig *bool `pulumi:"upgradeStorageConfig"` // (Required unless a `snapshotIdentifier` or `replicateSourceDb` // is provided) Username for the master DB user. Cannot be specified for a replica. Username *string `pulumi:"username"` @@ -1192,6 +1196,8 @@ type InstanceState struct { // Guide](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone) // for more information. Timezone pulumi.StringPtrInput + // Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicateSourceDb`. + UpgradeStorageConfig pulumi.BoolPtrInput // (Required unless a `snapshotIdentifier` or `replicateSourceDb` // is provided) Username for the master DB user. Cannot be specified for a replica. Username pulumi.StringPtrInput @@ -1417,6 +1423,8 @@ type instanceArgs struct { // Guide](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone) // for more information. Timezone *string `pulumi:"timezone"` + // Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicateSourceDb`. + UpgradeStorageConfig *bool `pulumi:"upgradeStorageConfig"` // (Required unless a `snapshotIdentifier` or `replicateSourceDb` // is provided) Username for the master DB user. Cannot be specified for a replica. Username *string `pulumi:"username"` @@ -1639,6 +1647,8 @@ type InstanceArgs struct { // Guide](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone) // for more information. Timezone pulumi.StringPtrInput + // Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicateSourceDb`. + UpgradeStorageConfig pulumi.BoolPtrInput // (Required unless a `snapshotIdentifier` or `replicateSourceDb` // is provided) Username for the master DB user. Cannot be specified for a replica. Username pulumi.StringPtrInput @@ -2205,6 +2215,11 @@ func (o InstanceOutput) Timezone() pulumi.StringOutput { return o.ApplyT(func(v *Instance) pulumi.StringOutput { return v.Timezone }).(pulumi.StringOutput) } +// Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicateSourceDb`. +func (o InstanceOutput) UpgradeStorageConfig() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Instance) pulumi.BoolPtrOutput { return v.UpgradeStorageConfig }).(pulumi.BoolPtrOutput) +} + // (Required unless a `snapshotIdentifier` or `replicateSourceDb` // is provided) Username for the master DB user. Cannot be specified for a replica. func (o InstanceOutput) Username() pulumi.StringOutput { diff --git a/sdk/go/aws/rds/pulumiTypes.go b/sdk/go/aws/rds/pulumiTypes.go index 9be8c4f8eca..8e97e5d14fd 100644 --- a/sdk/go/aws/rds/pulumiTypes.go +++ b/sdk/go/aws/rds/pulumiTypes.go @@ -256,7 +256,9 @@ type ClusterRestoreToPointInTime struct { // Valid options are `full-copy` (default) and `copy-on-write`. RestoreType *string `pulumi:"restoreType"` // Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. - SourceClusterIdentifier string `pulumi:"sourceClusterIdentifier"` + SourceClusterIdentifier *string `pulumi:"sourceClusterIdentifier"` + // Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + SourceClusterResourceId *string `pulumi:"sourceClusterResourceId"` // Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restoreToTime`. UseLatestRestorableTime *bool `pulumi:"useLatestRestorableTime"` } @@ -279,7 +281,9 @@ type ClusterRestoreToPointInTimeArgs struct { // Valid options are `full-copy` (default) and `copy-on-write`. RestoreType pulumi.StringPtrInput `pulumi:"restoreType"` // Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. - SourceClusterIdentifier pulumi.StringInput `pulumi:"sourceClusterIdentifier"` + SourceClusterIdentifier pulumi.StringPtrInput `pulumi:"sourceClusterIdentifier"` + // Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + SourceClusterResourceId pulumi.StringPtrInput `pulumi:"sourceClusterResourceId"` // Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restoreToTime`. UseLatestRestorableTime pulumi.BoolPtrInput `pulumi:"useLatestRestorableTime"` } @@ -373,8 +377,13 @@ func (o ClusterRestoreToPointInTimeOutput) RestoreType() pulumi.StringPtrOutput } // Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. -func (o ClusterRestoreToPointInTimeOutput) SourceClusterIdentifier() pulumi.StringOutput { - return o.ApplyT(func(v ClusterRestoreToPointInTime) string { return v.SourceClusterIdentifier }).(pulumi.StringOutput) +func (o ClusterRestoreToPointInTimeOutput) SourceClusterIdentifier() pulumi.StringPtrOutput { + return o.ApplyT(func(v ClusterRestoreToPointInTime) *string { return v.SourceClusterIdentifier }).(pulumi.StringPtrOutput) +} + +// Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. +func (o ClusterRestoreToPointInTimeOutput) SourceClusterResourceId() pulumi.StringPtrOutput { + return o.ApplyT(func(v ClusterRestoreToPointInTime) *string { return v.SourceClusterResourceId }).(pulumi.StringPtrOutput) } // Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restoreToTime`. @@ -433,7 +442,17 @@ func (o ClusterRestoreToPointInTimePtrOutput) SourceClusterIdentifier() pulumi.S if v == nil { return nil } - return &v.SourceClusterIdentifier + return v.SourceClusterIdentifier + }).(pulumi.StringPtrOutput) +} + +// Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. +func (o ClusterRestoreToPointInTimePtrOutput) SourceClusterResourceId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ClusterRestoreToPointInTime) *string { + if v == nil { + return nil + } + return v.SourceClusterResourceId }).(pulumi.StringPtrOutput) } diff --git a/sdk/go/aws/s3/bucketNotification.go b/sdk/go/aws/s3/bucketNotification.go index d2b30825c0f..dce92c8301e 100644 --- a/sdk/go/aws/s3/bucketNotification.go +++ b/sdk/go/aws/s3/bucketNotification.go @@ -14,7 +14,7 @@ import ( // Manages a S3 Bucket Notification Configuration. For additional information, see the [Configuring S3 Event Notifications section in the Amazon S3 Developer Guide](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). // -// > **NOTE:** S3 Buckets only support a single notification configuration. Declaring multiple `s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. See the example "Trigger multiple Lambda functions" for an option. +// > **NOTE:** S3 Buckets only support a single notification configuration resource. Declaring multiple `s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. This resource will overwrite any existing event notifications configured for the S3 bucket it's associated with. See the example "Trigger multiple Lambda functions" for an option of how to configure multiple triggers within this resource. // // > This resource cannot be used with S3 directory buckets. // diff --git a/sdk/go/aws/sagemaker/getPrebuiltEcrImage.go b/sdk/go/aws/sagemaker/getPrebuiltEcrImage.go index db01f8d26c3..e430f7e871f 100644 --- a/sdk/go/aws/sagemaker/getPrebuiltEcrImage.go +++ b/sdk/go/aws/sagemaker/getPrebuiltEcrImage.go @@ -61,7 +61,7 @@ type GetPrebuiltEcrImageArgs struct { ImageTag *string `pulumi:"imageTag"` // Region to use in the registry path. If not specified, the AWS provider sets it to the current region. Region *string `pulumi:"region"` - // Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + // Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. RepositoryName string `pulumi:"repositoryName"` } @@ -100,7 +100,7 @@ type GetPrebuiltEcrImageOutputArgs struct { ImageTag pulumi.StringPtrInput `pulumi:"imageTag"` // Region to use in the registry path. If not specified, the AWS provider sets it to the current region. Region pulumi.StringPtrInput `pulumi:"region"` - // Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + // Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. RepositoryName pulumi.StringInput `pulumi:"repositoryName"` } diff --git a/sdk/go/aws/sfn/activity.go b/sdk/go/aws/sfn/activity.go index c30c0599041..2e938c60df1 100644 --- a/sdk/go/aws/sfn/activity.go +++ b/sdk/go/aws/sfn/activity.go @@ -15,6 +15,8 @@ import ( // // ## Example Usage // +// ### Basic +// // ```go // package main // @@ -39,6 +41,39 @@ import ( // // ``` // +// ### Encryption +// +// > *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. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sfn" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := sfn.NewActivity(ctx, "sfn_activity", &sfn.ActivityArgs{ +// Name: pulumi.String("my-activity"), +// EncryptionConfiguration: &sfn.ActivityEncryptionConfigurationArgs{ +// KmsKeyId: pulumi.Any(kmsKeyForSfn.Arn), +// Type: pulumi.String("CUSTOMER_MANAGED_KMS_KEY"), +// KmsDataKeyReusePeriodSeconds: pulumi.Int(900), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// // ## Import // // Using `pulumi import`, import activities using the `arn`. For example: @@ -51,6 +86,8 @@ type Activity struct { // The date the activity was created. CreationDate pulumi.StringOutput `pulumi:"creationDate"` + // Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + EncryptionConfiguration ActivityEncryptionConfigurationOutput `pulumi:"encryptionConfiguration"` // The name of the activity to create. Name pulumi.StringOutput `pulumi:"name"` // Key-value map of resource tags. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. @@ -93,6 +130,8 @@ func GetActivity(ctx *pulumi.Context, type activityState struct { // The date the activity was created. CreationDate *string `pulumi:"creationDate"` + // Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + EncryptionConfiguration *ActivityEncryptionConfiguration `pulumi:"encryptionConfiguration"` // The name of the activity to create. Name *string `pulumi:"name"` // Key-value map of resource tags. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. @@ -106,6 +145,8 @@ type activityState struct { type ActivityState struct { // The date the activity was created. CreationDate pulumi.StringPtrInput + // Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + EncryptionConfiguration ActivityEncryptionConfigurationPtrInput // The name of the activity to create. Name pulumi.StringPtrInput // Key-value map of resource tags. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. @@ -121,6 +162,8 @@ func (ActivityState) ElementType() reflect.Type { } type activityArgs struct { + // Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + EncryptionConfiguration *ActivityEncryptionConfiguration `pulumi:"encryptionConfiguration"` // The name of the activity to create. Name *string `pulumi:"name"` // Key-value map of resource tags. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. @@ -129,6 +172,8 @@ type activityArgs struct { // The set of arguments for constructing a Activity resource. type ActivityArgs struct { + // Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + EncryptionConfiguration ActivityEncryptionConfigurationPtrInput // The name of the activity to create. Name pulumi.StringPtrInput // Key-value map of resource tags. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. @@ -227,6 +272,11 @@ func (o ActivityOutput) CreationDate() pulumi.StringOutput { return o.ApplyT(func(v *Activity) pulumi.StringOutput { return v.CreationDate }).(pulumi.StringOutput) } +// Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. +func (o ActivityOutput) EncryptionConfiguration() ActivityEncryptionConfigurationOutput { + return o.ApplyT(func(v *Activity) ActivityEncryptionConfigurationOutput { return v.EncryptionConfiguration }).(ActivityEncryptionConfigurationOutput) +} + // The name of the activity to create. func (o ActivityOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v *Activity) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) diff --git a/sdk/go/aws/sfn/pulumiTypes.go b/sdk/go/aws/sfn/pulumiTypes.go index e09487367cb..78c6386fee3 100644 --- a/sdk/go/aws/sfn/pulumiTypes.go +++ b/sdk/go/aws/sfn/pulumiTypes.go @@ -13,6 +13,181 @@ import ( var _ = internal.GetEnvOrDefault +type ActivityEncryptionConfiguration struct { + // Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + KmsDataKeyReusePeriodSeconds *int `pulumi:"kmsDataKeyReusePeriodSeconds"` + // The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + KmsKeyId *string `pulumi:"kmsKeyId"` + // The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + Type *string `pulumi:"type"` +} + +// ActivityEncryptionConfigurationInput is an input type that accepts ActivityEncryptionConfigurationArgs and ActivityEncryptionConfigurationOutput values. +// You can construct a concrete instance of `ActivityEncryptionConfigurationInput` via: +// +// ActivityEncryptionConfigurationArgs{...} +type ActivityEncryptionConfigurationInput interface { + pulumi.Input + + ToActivityEncryptionConfigurationOutput() ActivityEncryptionConfigurationOutput + ToActivityEncryptionConfigurationOutputWithContext(context.Context) ActivityEncryptionConfigurationOutput +} + +type ActivityEncryptionConfigurationArgs struct { + // Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + KmsDataKeyReusePeriodSeconds pulumi.IntPtrInput `pulumi:"kmsDataKeyReusePeriodSeconds"` + // The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + KmsKeyId pulumi.StringPtrInput `pulumi:"kmsKeyId"` + // The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + Type pulumi.StringPtrInput `pulumi:"type"` +} + +func (ActivityEncryptionConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ActivityEncryptionConfiguration)(nil)).Elem() +} + +func (i ActivityEncryptionConfigurationArgs) ToActivityEncryptionConfigurationOutput() ActivityEncryptionConfigurationOutput { + return i.ToActivityEncryptionConfigurationOutputWithContext(context.Background()) +} + +func (i ActivityEncryptionConfigurationArgs) ToActivityEncryptionConfigurationOutputWithContext(ctx context.Context) ActivityEncryptionConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ActivityEncryptionConfigurationOutput) +} + +func (i ActivityEncryptionConfigurationArgs) ToActivityEncryptionConfigurationPtrOutput() ActivityEncryptionConfigurationPtrOutput { + return i.ToActivityEncryptionConfigurationPtrOutputWithContext(context.Background()) +} + +func (i ActivityEncryptionConfigurationArgs) ToActivityEncryptionConfigurationPtrOutputWithContext(ctx context.Context) ActivityEncryptionConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ActivityEncryptionConfigurationOutput).ToActivityEncryptionConfigurationPtrOutputWithContext(ctx) +} + +// ActivityEncryptionConfigurationPtrInput is an input type that accepts ActivityEncryptionConfigurationArgs, ActivityEncryptionConfigurationPtr and ActivityEncryptionConfigurationPtrOutput values. +// You can construct a concrete instance of `ActivityEncryptionConfigurationPtrInput` via: +// +// ActivityEncryptionConfigurationArgs{...} +// +// or: +// +// nil +type ActivityEncryptionConfigurationPtrInput interface { + pulumi.Input + + ToActivityEncryptionConfigurationPtrOutput() ActivityEncryptionConfigurationPtrOutput + ToActivityEncryptionConfigurationPtrOutputWithContext(context.Context) ActivityEncryptionConfigurationPtrOutput +} + +type activityEncryptionConfigurationPtrType ActivityEncryptionConfigurationArgs + +func ActivityEncryptionConfigurationPtr(v *ActivityEncryptionConfigurationArgs) ActivityEncryptionConfigurationPtrInput { + return (*activityEncryptionConfigurationPtrType)(v) +} + +func (*activityEncryptionConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ActivityEncryptionConfiguration)(nil)).Elem() +} + +func (i *activityEncryptionConfigurationPtrType) ToActivityEncryptionConfigurationPtrOutput() ActivityEncryptionConfigurationPtrOutput { + return i.ToActivityEncryptionConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *activityEncryptionConfigurationPtrType) ToActivityEncryptionConfigurationPtrOutputWithContext(ctx context.Context) ActivityEncryptionConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ActivityEncryptionConfigurationPtrOutput) +} + +type ActivityEncryptionConfigurationOutput struct{ *pulumi.OutputState } + +func (ActivityEncryptionConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ActivityEncryptionConfiguration)(nil)).Elem() +} + +func (o ActivityEncryptionConfigurationOutput) ToActivityEncryptionConfigurationOutput() ActivityEncryptionConfigurationOutput { + return o +} + +func (o ActivityEncryptionConfigurationOutput) ToActivityEncryptionConfigurationOutputWithContext(ctx context.Context) ActivityEncryptionConfigurationOutput { + return o +} + +func (o ActivityEncryptionConfigurationOutput) ToActivityEncryptionConfigurationPtrOutput() ActivityEncryptionConfigurationPtrOutput { + return o.ToActivityEncryptionConfigurationPtrOutputWithContext(context.Background()) +} + +func (o ActivityEncryptionConfigurationOutput) ToActivityEncryptionConfigurationPtrOutputWithContext(ctx context.Context) ActivityEncryptionConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ActivityEncryptionConfiguration) *ActivityEncryptionConfiguration { + return &v + }).(ActivityEncryptionConfigurationPtrOutput) +} + +// Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. +func (o ActivityEncryptionConfigurationOutput) KmsDataKeyReusePeriodSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v ActivityEncryptionConfiguration) *int { return v.KmsDataKeyReusePeriodSeconds }).(pulumi.IntPtrOutput) +} + +// The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. +func (o ActivityEncryptionConfigurationOutput) KmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v ActivityEncryptionConfiguration) *string { return v.KmsKeyId }).(pulumi.StringPtrOutput) +} + +// The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` +func (o ActivityEncryptionConfigurationOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v ActivityEncryptionConfiguration) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +type ActivityEncryptionConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (ActivityEncryptionConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ActivityEncryptionConfiguration)(nil)).Elem() +} + +func (o ActivityEncryptionConfigurationPtrOutput) ToActivityEncryptionConfigurationPtrOutput() ActivityEncryptionConfigurationPtrOutput { + return o +} + +func (o ActivityEncryptionConfigurationPtrOutput) ToActivityEncryptionConfigurationPtrOutputWithContext(ctx context.Context) ActivityEncryptionConfigurationPtrOutput { + return o +} + +func (o ActivityEncryptionConfigurationPtrOutput) Elem() ActivityEncryptionConfigurationOutput { + return o.ApplyT(func(v *ActivityEncryptionConfiguration) ActivityEncryptionConfiguration { + if v != nil { + return *v + } + var ret ActivityEncryptionConfiguration + return ret + }).(ActivityEncryptionConfigurationOutput) +} + +// Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. +func (o ActivityEncryptionConfigurationPtrOutput) KmsDataKeyReusePeriodSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ActivityEncryptionConfiguration) *int { + if v == nil { + return nil + } + return v.KmsDataKeyReusePeriodSeconds + }).(pulumi.IntPtrOutput) +} + +// The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. +func (o ActivityEncryptionConfigurationPtrOutput) KmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ActivityEncryptionConfiguration) *string { + if v == nil { + return nil + } + return v.KmsKeyId + }).(pulumi.StringPtrOutput) +} + +// The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` +func (o ActivityEncryptionConfigurationPtrOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ActivityEncryptionConfiguration) *string { + if v == nil { + return nil + } + return v.Type + }).(pulumi.StringPtrOutput) +} + type AliasRoutingConfiguration struct { // The Amazon Resource Name (ARN) of the state machine version. StateMachineVersionArn string `pulumi:"stateMachineVersionArn"` @@ -119,6 +294,181 @@ func (o AliasRoutingConfigurationArrayOutput) Index(i pulumi.IntInput) AliasRout }).(AliasRoutingConfigurationOutput) } +type StateMachineEncryptionConfiguration struct { + // Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + KmsDataKeyReusePeriodSeconds *int `pulumi:"kmsDataKeyReusePeriodSeconds"` + // The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + KmsKeyId *string `pulumi:"kmsKeyId"` + // The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + Type *string `pulumi:"type"` +} + +// StateMachineEncryptionConfigurationInput is an input type that accepts StateMachineEncryptionConfigurationArgs and StateMachineEncryptionConfigurationOutput values. +// You can construct a concrete instance of `StateMachineEncryptionConfigurationInput` via: +// +// StateMachineEncryptionConfigurationArgs{...} +type StateMachineEncryptionConfigurationInput interface { + pulumi.Input + + ToStateMachineEncryptionConfigurationOutput() StateMachineEncryptionConfigurationOutput + ToStateMachineEncryptionConfigurationOutputWithContext(context.Context) StateMachineEncryptionConfigurationOutput +} + +type StateMachineEncryptionConfigurationArgs struct { + // Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + KmsDataKeyReusePeriodSeconds pulumi.IntPtrInput `pulumi:"kmsDataKeyReusePeriodSeconds"` + // The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + KmsKeyId pulumi.StringPtrInput `pulumi:"kmsKeyId"` + // The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + Type pulumi.StringPtrInput `pulumi:"type"` +} + +func (StateMachineEncryptionConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*StateMachineEncryptionConfiguration)(nil)).Elem() +} + +func (i StateMachineEncryptionConfigurationArgs) ToStateMachineEncryptionConfigurationOutput() StateMachineEncryptionConfigurationOutput { + return i.ToStateMachineEncryptionConfigurationOutputWithContext(context.Background()) +} + +func (i StateMachineEncryptionConfigurationArgs) ToStateMachineEncryptionConfigurationOutputWithContext(ctx context.Context) StateMachineEncryptionConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(StateMachineEncryptionConfigurationOutput) +} + +func (i StateMachineEncryptionConfigurationArgs) ToStateMachineEncryptionConfigurationPtrOutput() StateMachineEncryptionConfigurationPtrOutput { + return i.ToStateMachineEncryptionConfigurationPtrOutputWithContext(context.Background()) +} + +func (i StateMachineEncryptionConfigurationArgs) ToStateMachineEncryptionConfigurationPtrOutputWithContext(ctx context.Context) StateMachineEncryptionConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(StateMachineEncryptionConfigurationOutput).ToStateMachineEncryptionConfigurationPtrOutputWithContext(ctx) +} + +// StateMachineEncryptionConfigurationPtrInput is an input type that accepts StateMachineEncryptionConfigurationArgs, StateMachineEncryptionConfigurationPtr and StateMachineEncryptionConfigurationPtrOutput values. +// You can construct a concrete instance of `StateMachineEncryptionConfigurationPtrInput` via: +// +// StateMachineEncryptionConfigurationArgs{...} +// +// or: +// +// nil +type StateMachineEncryptionConfigurationPtrInput interface { + pulumi.Input + + ToStateMachineEncryptionConfigurationPtrOutput() StateMachineEncryptionConfigurationPtrOutput + ToStateMachineEncryptionConfigurationPtrOutputWithContext(context.Context) StateMachineEncryptionConfigurationPtrOutput +} + +type stateMachineEncryptionConfigurationPtrType StateMachineEncryptionConfigurationArgs + +func StateMachineEncryptionConfigurationPtr(v *StateMachineEncryptionConfigurationArgs) StateMachineEncryptionConfigurationPtrInput { + return (*stateMachineEncryptionConfigurationPtrType)(v) +} + +func (*stateMachineEncryptionConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**StateMachineEncryptionConfiguration)(nil)).Elem() +} + +func (i *stateMachineEncryptionConfigurationPtrType) ToStateMachineEncryptionConfigurationPtrOutput() StateMachineEncryptionConfigurationPtrOutput { + return i.ToStateMachineEncryptionConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *stateMachineEncryptionConfigurationPtrType) ToStateMachineEncryptionConfigurationPtrOutputWithContext(ctx context.Context) StateMachineEncryptionConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(StateMachineEncryptionConfigurationPtrOutput) +} + +type StateMachineEncryptionConfigurationOutput struct{ *pulumi.OutputState } + +func (StateMachineEncryptionConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*StateMachineEncryptionConfiguration)(nil)).Elem() +} + +func (o StateMachineEncryptionConfigurationOutput) ToStateMachineEncryptionConfigurationOutput() StateMachineEncryptionConfigurationOutput { + return o +} + +func (o StateMachineEncryptionConfigurationOutput) ToStateMachineEncryptionConfigurationOutputWithContext(ctx context.Context) StateMachineEncryptionConfigurationOutput { + return o +} + +func (o StateMachineEncryptionConfigurationOutput) ToStateMachineEncryptionConfigurationPtrOutput() StateMachineEncryptionConfigurationPtrOutput { + return o.ToStateMachineEncryptionConfigurationPtrOutputWithContext(context.Background()) +} + +func (o StateMachineEncryptionConfigurationOutput) ToStateMachineEncryptionConfigurationPtrOutputWithContext(ctx context.Context) StateMachineEncryptionConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v StateMachineEncryptionConfiguration) *StateMachineEncryptionConfiguration { + return &v + }).(StateMachineEncryptionConfigurationPtrOutput) +} + +// Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. +func (o StateMachineEncryptionConfigurationOutput) KmsDataKeyReusePeriodSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v StateMachineEncryptionConfiguration) *int { return v.KmsDataKeyReusePeriodSeconds }).(pulumi.IntPtrOutput) +} + +// The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. +func (o StateMachineEncryptionConfigurationOutput) KmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v StateMachineEncryptionConfiguration) *string { return v.KmsKeyId }).(pulumi.StringPtrOutput) +} + +// The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` +func (o StateMachineEncryptionConfigurationOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v StateMachineEncryptionConfiguration) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +type StateMachineEncryptionConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (StateMachineEncryptionConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**StateMachineEncryptionConfiguration)(nil)).Elem() +} + +func (o StateMachineEncryptionConfigurationPtrOutput) ToStateMachineEncryptionConfigurationPtrOutput() StateMachineEncryptionConfigurationPtrOutput { + return o +} + +func (o StateMachineEncryptionConfigurationPtrOutput) ToStateMachineEncryptionConfigurationPtrOutputWithContext(ctx context.Context) StateMachineEncryptionConfigurationPtrOutput { + return o +} + +func (o StateMachineEncryptionConfigurationPtrOutput) Elem() StateMachineEncryptionConfigurationOutput { + return o.ApplyT(func(v *StateMachineEncryptionConfiguration) StateMachineEncryptionConfiguration { + if v != nil { + return *v + } + var ret StateMachineEncryptionConfiguration + return ret + }).(StateMachineEncryptionConfigurationOutput) +} + +// Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. +func (o StateMachineEncryptionConfigurationPtrOutput) KmsDataKeyReusePeriodSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v *StateMachineEncryptionConfiguration) *int { + if v == nil { + return nil + } + return v.KmsDataKeyReusePeriodSeconds + }).(pulumi.IntPtrOutput) +} + +// The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. +func (o StateMachineEncryptionConfigurationPtrOutput) KmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *StateMachineEncryptionConfiguration) *string { + if v == nil { + return nil + } + return v.KmsKeyId + }).(pulumi.StringPtrOutput) +} + +// The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` +func (o StateMachineEncryptionConfigurationPtrOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v *StateMachineEncryptionConfiguration) *string { + if v == nil { + return nil + } + return v.Type + }).(pulumi.StringPtrOutput) +} + type StateMachineLoggingConfiguration struct { // Determines whether execution data is included in your log. When set to `false`, data is excluded. IncludeExecutionData *bool `pulumi:"includeExecutionData"` @@ -532,16 +882,24 @@ func (o GetAliasRoutingConfigurationArrayOutput) Index(i pulumi.IntInput) GetAli } func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ActivityEncryptionConfigurationInput)(nil)).Elem(), ActivityEncryptionConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ActivityEncryptionConfigurationPtrInput)(nil)).Elem(), ActivityEncryptionConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AliasRoutingConfigurationInput)(nil)).Elem(), AliasRoutingConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AliasRoutingConfigurationArrayInput)(nil)).Elem(), AliasRoutingConfigurationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*StateMachineEncryptionConfigurationInput)(nil)).Elem(), StateMachineEncryptionConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*StateMachineEncryptionConfigurationPtrInput)(nil)).Elem(), StateMachineEncryptionConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*StateMachineLoggingConfigurationInput)(nil)).Elem(), StateMachineLoggingConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*StateMachineLoggingConfigurationPtrInput)(nil)).Elem(), StateMachineLoggingConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*StateMachineTracingConfigurationInput)(nil)).Elem(), StateMachineTracingConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*StateMachineTracingConfigurationPtrInput)(nil)).Elem(), StateMachineTracingConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetAliasRoutingConfigurationInput)(nil)).Elem(), GetAliasRoutingConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetAliasRoutingConfigurationArrayInput)(nil)).Elem(), GetAliasRoutingConfigurationArray{}) + pulumi.RegisterOutputType(ActivityEncryptionConfigurationOutput{}) + pulumi.RegisterOutputType(ActivityEncryptionConfigurationPtrOutput{}) pulumi.RegisterOutputType(AliasRoutingConfigurationOutput{}) pulumi.RegisterOutputType(AliasRoutingConfigurationArrayOutput{}) + pulumi.RegisterOutputType(StateMachineEncryptionConfigurationOutput{}) + pulumi.RegisterOutputType(StateMachineEncryptionConfigurationPtrOutput{}) pulumi.RegisterOutputType(StateMachineLoggingConfigurationOutput{}) pulumi.RegisterOutputType(StateMachineLoggingConfigurationPtrOutput{}) pulumi.RegisterOutputType(StateMachineTracingConfigurationOutput{}) diff --git a/sdk/go/aws/sfn/stateMachine.go b/sdk/go/aws/sfn/stateMachine.go index 83fcd1b7e76..1ab121b2e64 100644 --- a/sdk/go/aws/sfn/stateMachine.go +++ b/sdk/go/aws/sfn/stateMachine.go @@ -202,6 +202,57 @@ import ( // // ``` // +// ### Encryption +// +// > *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. +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sfn" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// // ... +// _, err := sfn.NewStateMachine(ctx, "sfn_state_machine", &sfn.StateMachineArgs{ +// Name: pulumi.String("my-state-machine"), +// RoleArn: pulumi.Any(iamForSfn.Arn), +// Definition: pulumi.String(fmt.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 +// } +// } +// } +// +// `, lambda.Arn)), +// +// EncryptionConfiguration: &sfn.StateMachineEncryptionConfigurationArgs{ +// KmsKeyId: pulumi.Any(kmsKeyForSfn.Arn), +// Type: pulumi.String("CUSTOMER_MANAGED_KMS_KEY"), +// KmsDataKeyReusePeriodSeconds: pulumi.Int(900), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// // ## Import // // Using `pulumi import`, import State Machines using the `arn`. For example: @@ -219,6 +270,8 @@ type StateMachine struct { // The [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html) definition of the state machine. Definition pulumi.StringOutput `pulumi:"definition"` Description pulumi.StringOutput `pulumi:"description"` + // Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + EncryptionConfiguration StateMachineEncryptionConfigurationOutput `pulumi:"encryptionConfiguration"` // Defines what execution history events are logged and where they are logged. The `loggingConfiguration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. LoggingConfiguration StateMachineLoggingConfigurationOutput `pulumi:"loggingConfiguration"` // The name of the state machine. The name should only contain `0`-`9`, `A`-`Z`, `a`-`z`, `-` and `_`. If omitted, the provider will assign a random, unique name. @@ -290,6 +343,8 @@ type stateMachineState struct { // The [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html) definition of the state machine. Definition *string `pulumi:"definition"` Description *string `pulumi:"description"` + // Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + EncryptionConfiguration *StateMachineEncryptionConfiguration `pulumi:"encryptionConfiguration"` // Defines what execution history events are logged and where they are logged. The `loggingConfiguration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. LoggingConfiguration *StateMachineLoggingConfiguration `pulumi:"loggingConfiguration"` // The name of the state machine. The name should only contain `0`-`9`, `A`-`Z`, `a`-`z`, `-` and `_`. If omitted, the provider will assign a random, unique name. @@ -326,6 +381,8 @@ type StateMachineState struct { // The [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html) definition of the state machine. Definition pulumi.StringPtrInput Description pulumi.StringPtrInput + // Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + EncryptionConfiguration StateMachineEncryptionConfigurationPtrInput // Defines what execution history events are logged and where they are logged. The `loggingConfiguration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. LoggingConfiguration StateMachineLoggingConfigurationPtrInput // The name of the state machine. The name should only contain `0`-`9`, `A`-`Z`, `a`-`z`, `-` and `_`. If omitted, the provider will assign a random, unique name. @@ -361,6 +418,8 @@ func (StateMachineState) ElementType() reflect.Type { type stateMachineArgs struct { // The [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html) definition of the state machine. Definition string `pulumi:"definition"` + // Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + EncryptionConfiguration *StateMachineEncryptionConfiguration `pulumi:"encryptionConfiguration"` // Defines what execution history events are logged and where they are logged. The `loggingConfiguration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. LoggingConfiguration *StateMachineLoggingConfiguration `pulumi:"loggingConfiguration"` // The name of the state machine. The name should only contain `0`-`9`, `A`-`Z`, `a`-`z`, `-` and `_`. If omitted, the provider will assign a random, unique name. @@ -383,6 +442,8 @@ type stateMachineArgs struct { type StateMachineArgs struct { // The [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html) definition of the state machine. Definition pulumi.StringInput + // Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + EncryptionConfiguration StateMachineEncryptionConfigurationPtrInput // Defines what execution history events are logged and where they are logged. The `loggingConfiguration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. LoggingConfiguration StateMachineLoggingConfigurationPtrInput // The name of the state machine. The name should only contain `0`-`9`, `A`-`Z`, `a`-`z`, `-` and `_`. If omitted, the provider will assign a random, unique name. @@ -507,6 +568,11 @@ func (o StateMachineOutput) Description() pulumi.StringOutput { return o.ApplyT(func(v *StateMachine) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) } +// Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. +func (o StateMachineOutput) EncryptionConfiguration() StateMachineEncryptionConfigurationOutput { + return o.ApplyT(func(v *StateMachine) StateMachineEncryptionConfigurationOutput { return v.EncryptionConfiguration }).(StateMachineEncryptionConfigurationOutput) +} + // Defines what execution history events are logged and where they are logged. The `loggingConfiguration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. func (o StateMachineOutput) LoggingConfiguration() StateMachineLoggingConfigurationOutput { return o.ApplyT(func(v *StateMachine) StateMachineLoggingConfigurationOutput { return v.LoggingConfiguration }).(StateMachineLoggingConfigurationOutput) diff --git a/sdk/go/aws/timestreaminfluxdb/dbInstance.go b/sdk/go/aws/timestreaminfluxdb/dbInstance.go new file mode 100644 index 00000000000..20eb4983f25 --- /dev/null +++ b/sdk/go/aws/timestreaminfluxdb/dbInstance.go @@ -0,0 +1,807 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package timestreaminfluxdb + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Resource for managing an Amazon Timestream for InfluxDB Db Instance. +// +// ## Example Usage +// +// ### Basic Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/timestreaminfluxdb" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := timestreaminfluxdb.NewDbInstance(ctx, "example", ×treaminfluxdb.DbInstanceArgs{ +// AllocatedStorage: pulumi.Int(20), +// Bucket: pulumi.String("example-bucket-name"), +// DbInstanceType: pulumi.String("db.influx.medium"), +// Username: pulumi.String("admin"), +// Password: pulumi.String("example-password"), +// Organization: pulumi.String("organization"), +// VpcSubnetIds: pulumi.StringArray{ +// exampleid, +// }, +// VpcSecurityGroupIds: pulumi.StringArray{ +// exampleAwsSecurityGroup.Id, +// }, +// Name: pulumi.String("example-db-instance"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Usage with Prerequisite Resources +// +// All Timestream for InfluxDB instances require a VPC, subnet, and security group. The following example shows how these prerequisite resources can be created and used with `timestreaminfluxdb.DbInstance`. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/timestreaminfluxdb" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := ec2.NewVpc(ctx, "example", &ec2.VpcArgs{ +// CidrBlock: pulumi.String("10.0.0.0/16"), +// }) +// if err != nil { +// return err +// } +// exampleSubnet, err := ec2.NewSubnet(ctx, "example", &ec2.SubnetArgs{ +// VpcId: example.ID(), +// CidrBlock: pulumi.String("10.0.1.0/24"), +// }) +// if err != nil { +// return err +// } +// exampleSecurityGroup, err := ec2.NewSecurityGroup(ctx, "example", &ec2.SecurityGroupArgs{ +// Name: pulumi.String("example"), +// VpcId: example.ID(), +// }) +// if err != nil { +// return err +// } +// _, err = timestreaminfluxdb.NewDbInstance(ctx, "example", ×treaminfluxdb.DbInstanceArgs{ +// AllocatedStorage: pulumi.Int(20), +// Bucket: pulumi.String("example-bucket-name"), +// DbInstanceType: pulumi.String("db.influx.medium"), +// Username: pulumi.String("admin"), +// Password: pulumi.String("example-password"), +// Organization: pulumi.String("organization"), +// VpcSubnetIds: pulumi.StringArray{ +// exampleSubnet.ID(), +// }, +// VpcSecurityGroupIds: pulumi.StringArray{ +// exampleSecurityGroup.ID(), +// }, +// Name: pulumi.String("example-db-instance"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Usage with S3 Log Delivery Enabled +// +// You can use an S3 bucket to store logs generated by your Timestream for InfluxDB instance. The following example shows what resources and arguments are required to configure an S3 bucket for logging, including the IAM policy that needs to be set in order to allow Timestream for InfluxDB to place logs in your S3 bucket. The configuration of the required VPC, security group, and subnet have been left out of the example for brevity. +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/timestreaminfluxdb" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// exampleBucketV2, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example-s3-bucket"), +// }) +// if err != nil { +// return err +// } +// example := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ +// Statements: iam.GetPolicyDocumentStatementArray{ +// &iam.GetPolicyDocumentStatementArgs{ +// Actions: pulumi.StringArray{ +// pulumi.String("s3:PutObject"), +// }, +// Principals: iam.GetPolicyDocumentStatementPrincipalArray{ +// &iam.GetPolicyDocumentStatementPrincipalArgs{ +// Type: pulumi.String("Service"), +// Identifiers: pulumi.StringArray{ +// pulumi.String("timestream-influxdb.amazonaws.com"), +// }, +// }, +// }, +// Resources: pulumi.StringArray{ +// exampleBucketV2.Arn.ApplyT(func(arn string) (string, error) { +// return fmt.Sprintf("%v/*", arn), nil +// }).(pulumi.StringOutput), +// }, +// }, +// }, +// }, nil) +// _, err = s3.NewBucketPolicy(ctx, "example", &s3.BucketPolicyArgs{ +// Bucket: exampleBucketV2.ID(), +// Policy: pulumi.String(example.ApplyT(func(example iam.GetPolicyDocumentResult) (*string, error) { +// return &example.Json, nil +// }).(pulumi.StringPtrOutput)), +// }) +// if err != nil { +// return err +// } +// _, err = timestreaminfluxdb.NewDbInstance(ctx, "example", ×treaminfluxdb.DbInstanceArgs{ +// AllocatedStorage: pulumi.Int(20), +// Bucket: pulumi.String("example-bucket-name"), +// DbInstanceType: pulumi.String("db.influx.medium"), +// Username: pulumi.String("admin"), +// Password: pulumi.String("example-password"), +// Organization: pulumi.String("organization"), +// VpcSubnetIds: pulumi.StringArray{ +// exampleAwsSubnet.Id, +// }, +// VpcSecurityGroupIds: pulumi.StringArray{ +// exampleAwsSecurityGroup.Id, +// }, +// Name: pulumi.String("example-db-instance"), +// LogDeliveryConfiguration: ×treaminfluxdb.DbInstanceLogDeliveryConfigurationArgs{ +// S3Configuration: ×treaminfluxdb.DbInstanceLogDeliveryConfigurationS3ConfigurationArgs{ +// BucketName: exampleBucketV2.Name, +// Enabled: pulumi.Bool(true), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Usage with MultiAZ Deployment +// +// To use multi-region availability, at least two subnets must be created in different availability zones and used with your Timestream for InfluxDB instance. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/timestreaminfluxdb" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example1, err := ec2.NewSubnet(ctx, "example_1", &ec2.SubnetArgs{ +// VpcId: pulumi.Any(exampleAwsVpc.Id), +// CidrBlock: pulumi.String("10.0.1.0/24"), +// AvailabilityZone: pulumi.String("us-west-2a"), +// }) +// if err != nil { +// return err +// } +// example2, err := ec2.NewSubnet(ctx, "example_2", &ec2.SubnetArgs{ +// VpcId: pulumi.Any(exampleAwsVpc.Id), +// CidrBlock: pulumi.String("10.0.2.0/24"), +// AvailabilityZone: pulumi.String("us-west-2b"), +// }) +// if err != nil { +// return err +// } +// _, err = timestreaminfluxdb.NewDbInstance(ctx, "example", ×treaminfluxdb.DbInstanceArgs{ +// AllocatedStorage: pulumi.Int(20), +// Bucket: pulumi.String("example-bucket-name"), +// DbInstanceType: pulumi.String("db.influx.medium"), +// DeploymentType: pulumi.String("WITH_MULTIAZ_STANDBY"), +// Username: pulumi.String("admin"), +// Password: pulumi.String("example-password"), +// Organization: pulumi.String("organization"), +// VpcSubnetIds: pulumi.StringArray{ +// example1.ID(), +// example2.ID(), +// }, +// VpcSecurityGroupIds: pulumi.StringArray{ +// exampleAwsSecurityGroup.Id, +// }, +// Name: pulumi.String("example-db-instance"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import Timestream for InfluxDB Db Instance using its identifier. For example: +// +// ```sh +// $ pulumi import aws:timestreaminfluxdb/dbInstance:DbInstance example 12345abcde +// ``` +type DbInstance struct { + pulumi.CustomResourceState + + // Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + AllocatedStorage pulumi.IntOutput `pulumi:"allocatedStorage"` + // ARN of the Timestream for InfluxDB Instance. + Arn pulumi.StringOutput `pulumi:"arn"` + // Availability Zone in which the DB instance resides. + AvailabilityZone pulumi.StringOutput `pulumi:"availabilityZone"` + // Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + DbInstanceType pulumi.StringOutput `pulumi:"dbInstanceType"` + // ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `dbParameterGroupIdentifier`, removing `dbParameterGroupIdentifier` will cause the instance to be destroyed and recreated. + DbParameterGroupIdentifier pulumi.StringPtrOutput `pulumi:"dbParameterGroupIdentifier"` + // Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocatedStorage` is 400. + DbStorageType pulumi.StringOutput `pulumi:"dbStorageType"` + // Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + DeploymentType pulumi.StringOutput `pulumi:"deploymentType"` + // Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + Endpoint pulumi.StringOutput `pulumi:"endpoint"` + // ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + InfluxAuthParametersSecretArn pulumi.StringOutput `pulumi:"influxAuthParametersSecretArn"` + // Configuration for sending InfluxDB engine logs to a specified S3 bucket. + LogDeliveryConfiguration DbInstanceLogDeliveryConfigurationPtrOutput `pulumi:"logDeliveryConfiguration"` + // Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + Name pulumi.StringOutput `pulumi:"name"` + // Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Organization pulumi.StringOutput `pulumi:"organization"` + // Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Password pulumi.StringOutput `pulumi:"password"` + // Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + PubliclyAccessible pulumi.BoolOutput `pulumi:"publiclyAccessible"` + // Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + SecondaryAvailabilityZone pulumi.StringOutput `pulumi:"secondaryAvailabilityZone"` + // Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + Timeouts DbInstanceTimeoutsPtrOutput `pulumi:"timeouts"` + // Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Username pulumi.StringOutput `pulumi:"username"` + // List of VPC security group IDs to associate with the DB instance. + VpcSecurityGroupIds pulumi.StringArrayOutput `pulumi:"vpcSecurityGroupIds"` + // List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + // + // The following arguments are optional: + VpcSubnetIds pulumi.StringArrayOutput `pulumi:"vpcSubnetIds"` +} + +// NewDbInstance registers a new resource with the given unique name, arguments, and options. +func NewDbInstance(ctx *pulumi.Context, + name string, args *DbInstanceArgs, opts ...pulumi.ResourceOption) (*DbInstance, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.AllocatedStorage == nil { + return nil, errors.New("invalid value for required argument 'AllocatedStorage'") + } + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.DbInstanceType == nil { + return nil, errors.New("invalid value for required argument 'DbInstanceType'") + } + if args.Organization == nil { + return nil, errors.New("invalid value for required argument 'Organization'") + } + if args.Password == nil { + return nil, errors.New("invalid value for required argument 'Password'") + } + if args.Username == nil { + return nil, errors.New("invalid value for required argument 'Username'") + } + if args.VpcSecurityGroupIds == nil { + return nil, errors.New("invalid value for required argument 'VpcSecurityGroupIds'") + } + if args.VpcSubnetIds == nil { + return nil, errors.New("invalid value for required argument 'VpcSubnetIds'") + } + if args.Password != nil { + args.Password = pulumi.ToSecret(args.Password).(pulumi.StringInput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "password", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource DbInstance + err := ctx.RegisterResource("aws:timestreaminfluxdb/dbInstance:DbInstance", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetDbInstance gets an existing DbInstance resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetDbInstance(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *DbInstanceState, opts ...pulumi.ResourceOption) (*DbInstance, error) { + var resource DbInstance + err := ctx.ReadResource("aws:timestreaminfluxdb/dbInstance:DbInstance", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering DbInstance resources. +type dbInstanceState struct { + // Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + AllocatedStorage *int `pulumi:"allocatedStorage"` + // ARN of the Timestream for InfluxDB Instance. + Arn *string `pulumi:"arn"` + // Availability Zone in which the DB instance resides. + AvailabilityZone *string `pulumi:"availabilityZone"` + // Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Bucket *string `pulumi:"bucket"` + // Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + DbInstanceType *string `pulumi:"dbInstanceType"` + // ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `dbParameterGroupIdentifier`, removing `dbParameterGroupIdentifier` will cause the instance to be destroyed and recreated. + DbParameterGroupIdentifier *string `pulumi:"dbParameterGroupIdentifier"` + // Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocatedStorage` is 400. + DbStorageType *string `pulumi:"dbStorageType"` + // Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + DeploymentType *string `pulumi:"deploymentType"` + // Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + Endpoint *string `pulumi:"endpoint"` + // ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + InfluxAuthParametersSecretArn *string `pulumi:"influxAuthParametersSecretArn"` + // Configuration for sending InfluxDB engine logs to a specified S3 bucket. + LogDeliveryConfiguration *DbInstanceLogDeliveryConfiguration `pulumi:"logDeliveryConfiguration"` + // Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + Name *string `pulumi:"name"` + // Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Organization *string `pulumi:"organization"` + // Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Password *string `pulumi:"password"` + // Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + PubliclyAccessible *bool `pulumi:"publiclyAccessible"` + // Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + SecondaryAvailabilityZone *string `pulumi:"secondaryAvailabilityZone"` + // Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + Timeouts *DbInstanceTimeouts `pulumi:"timeouts"` + // Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Username *string `pulumi:"username"` + // List of VPC security group IDs to associate with the DB instance. + VpcSecurityGroupIds []string `pulumi:"vpcSecurityGroupIds"` + // List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + // + // The following arguments are optional: + VpcSubnetIds []string `pulumi:"vpcSubnetIds"` +} + +type DbInstanceState struct { + // Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + AllocatedStorage pulumi.IntPtrInput + // ARN of the Timestream for InfluxDB Instance. + Arn pulumi.StringPtrInput + // Availability Zone in which the DB instance resides. + AvailabilityZone pulumi.StringPtrInput + // Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Bucket pulumi.StringPtrInput + // Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + DbInstanceType pulumi.StringPtrInput + // ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `dbParameterGroupIdentifier`, removing `dbParameterGroupIdentifier` will cause the instance to be destroyed and recreated. + DbParameterGroupIdentifier pulumi.StringPtrInput + // Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocatedStorage` is 400. + DbStorageType pulumi.StringPtrInput + // Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + DeploymentType pulumi.StringPtrInput + // Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + Endpoint pulumi.StringPtrInput + // ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + InfluxAuthParametersSecretArn pulumi.StringPtrInput + // Configuration for sending InfluxDB engine logs to a specified S3 bucket. + LogDeliveryConfiguration DbInstanceLogDeliveryConfigurationPtrInput + // Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + Name pulumi.StringPtrInput + // Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Organization pulumi.StringPtrInput + // Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Password pulumi.StringPtrInput + // Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + PubliclyAccessible pulumi.BoolPtrInput + // Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + SecondaryAvailabilityZone pulumi.StringPtrInput + // Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + Timeouts DbInstanceTimeoutsPtrInput + // Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Username pulumi.StringPtrInput + // List of VPC security group IDs to associate with the DB instance. + VpcSecurityGroupIds pulumi.StringArrayInput + // List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + // + // The following arguments are optional: + VpcSubnetIds pulumi.StringArrayInput +} + +func (DbInstanceState) ElementType() reflect.Type { + return reflect.TypeOf((*dbInstanceState)(nil)).Elem() +} + +type dbInstanceArgs struct { + // Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + AllocatedStorage int `pulumi:"allocatedStorage"` + // Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Bucket string `pulumi:"bucket"` + // Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + DbInstanceType string `pulumi:"dbInstanceType"` + // ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `dbParameterGroupIdentifier`, removing `dbParameterGroupIdentifier` will cause the instance to be destroyed and recreated. + DbParameterGroupIdentifier *string `pulumi:"dbParameterGroupIdentifier"` + // Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocatedStorage` is 400. + DbStorageType *string `pulumi:"dbStorageType"` + // Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + DeploymentType *string `pulumi:"deploymentType"` + // Configuration for sending InfluxDB engine logs to a specified S3 bucket. + LogDeliveryConfiguration *DbInstanceLogDeliveryConfiguration `pulumi:"logDeliveryConfiguration"` + // Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + Name *string `pulumi:"name"` + // Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Organization string `pulumi:"organization"` + // Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Password string `pulumi:"password"` + // Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + PubliclyAccessible *bool `pulumi:"publiclyAccessible"` + // Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + Timeouts *DbInstanceTimeouts `pulumi:"timeouts"` + // Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Username string `pulumi:"username"` + // List of VPC security group IDs to associate with the DB instance. + VpcSecurityGroupIds []string `pulumi:"vpcSecurityGroupIds"` + // List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + // + // The following arguments are optional: + VpcSubnetIds []string `pulumi:"vpcSubnetIds"` +} + +// The set of arguments for constructing a DbInstance resource. +type DbInstanceArgs struct { + // Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + AllocatedStorage pulumi.IntInput + // Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Bucket pulumi.StringInput + // Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + DbInstanceType pulumi.StringInput + // ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `dbParameterGroupIdentifier`, removing `dbParameterGroupIdentifier` will cause the instance to be destroyed and recreated. + DbParameterGroupIdentifier pulumi.StringPtrInput + // Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocatedStorage` is 400. + DbStorageType pulumi.StringPtrInput + // Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + DeploymentType pulumi.StringPtrInput + // Configuration for sending InfluxDB engine logs to a specified S3 bucket. + LogDeliveryConfiguration DbInstanceLogDeliveryConfigurationPtrInput + // Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + Name pulumi.StringPtrInput + // Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Organization pulumi.StringInput + // Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Password pulumi.StringInput + // Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + PubliclyAccessible pulumi.BoolPtrInput + // Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + Timeouts DbInstanceTimeoutsPtrInput + // Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + Username pulumi.StringInput + // List of VPC security group IDs to associate with the DB instance. + VpcSecurityGroupIds pulumi.StringArrayInput + // List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + // + // The following arguments are optional: + VpcSubnetIds pulumi.StringArrayInput +} + +func (DbInstanceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*dbInstanceArgs)(nil)).Elem() +} + +type DbInstanceInput interface { + pulumi.Input + + ToDbInstanceOutput() DbInstanceOutput + ToDbInstanceOutputWithContext(ctx context.Context) DbInstanceOutput +} + +func (*DbInstance) ElementType() reflect.Type { + return reflect.TypeOf((**DbInstance)(nil)).Elem() +} + +func (i *DbInstance) ToDbInstanceOutput() DbInstanceOutput { + return i.ToDbInstanceOutputWithContext(context.Background()) +} + +func (i *DbInstance) ToDbInstanceOutputWithContext(ctx context.Context) DbInstanceOutput { + return pulumi.ToOutputWithContext(ctx, i).(DbInstanceOutput) +} + +// DbInstanceArrayInput is an input type that accepts DbInstanceArray and DbInstanceArrayOutput values. +// You can construct a concrete instance of `DbInstanceArrayInput` via: +// +// DbInstanceArray{ DbInstanceArgs{...} } +type DbInstanceArrayInput interface { + pulumi.Input + + ToDbInstanceArrayOutput() DbInstanceArrayOutput + ToDbInstanceArrayOutputWithContext(context.Context) DbInstanceArrayOutput +} + +type DbInstanceArray []DbInstanceInput + +func (DbInstanceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*DbInstance)(nil)).Elem() +} + +func (i DbInstanceArray) ToDbInstanceArrayOutput() DbInstanceArrayOutput { + return i.ToDbInstanceArrayOutputWithContext(context.Background()) +} + +func (i DbInstanceArray) ToDbInstanceArrayOutputWithContext(ctx context.Context) DbInstanceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(DbInstanceArrayOutput) +} + +// DbInstanceMapInput is an input type that accepts DbInstanceMap and DbInstanceMapOutput values. +// You can construct a concrete instance of `DbInstanceMapInput` via: +// +// DbInstanceMap{ "key": DbInstanceArgs{...} } +type DbInstanceMapInput interface { + pulumi.Input + + ToDbInstanceMapOutput() DbInstanceMapOutput + ToDbInstanceMapOutputWithContext(context.Context) DbInstanceMapOutput +} + +type DbInstanceMap map[string]DbInstanceInput + +func (DbInstanceMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*DbInstance)(nil)).Elem() +} + +func (i DbInstanceMap) ToDbInstanceMapOutput() DbInstanceMapOutput { + return i.ToDbInstanceMapOutputWithContext(context.Background()) +} + +func (i DbInstanceMap) ToDbInstanceMapOutputWithContext(ctx context.Context) DbInstanceMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(DbInstanceMapOutput) +} + +type DbInstanceOutput struct{ *pulumi.OutputState } + +func (DbInstanceOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DbInstance)(nil)).Elem() +} + +func (o DbInstanceOutput) ToDbInstanceOutput() DbInstanceOutput { + return o +} + +func (o DbInstanceOutput) ToDbInstanceOutputWithContext(ctx context.Context) DbInstanceOutput { + return o +} + +// Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. +func (o DbInstanceOutput) AllocatedStorage() pulumi.IntOutput { + return o.ApplyT(func(v *DbInstance) pulumi.IntOutput { return v.AllocatedStorage }).(pulumi.IntOutput) +} + +// ARN of the Timestream for InfluxDB Instance. +func (o DbInstanceOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Availability Zone in which the DB instance resides. +func (o DbInstanceOutput) AvailabilityZone() pulumi.StringOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringOutput { return v.AvailabilityZone }).(pulumi.StringOutput) +} + +// Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. +func (o DbInstanceOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. +func (o DbInstanceOutput) DbInstanceType() pulumi.StringOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringOutput { return v.DbInstanceType }).(pulumi.StringOutput) +} + +// ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `dbParameterGroupIdentifier`, removing `dbParameterGroupIdentifier` will cause the instance to be destroyed and recreated. +func (o DbInstanceOutput) DbParameterGroupIdentifier() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringPtrOutput { return v.DbParameterGroupIdentifier }).(pulumi.StringPtrOutput) +} + +// Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocatedStorage` is 400. +func (o DbInstanceOutput) DbStorageType() pulumi.StringOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringOutput { return v.DbStorageType }).(pulumi.StringOutput) +} + +// Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. +func (o DbInstanceOutput) DeploymentType() pulumi.StringOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringOutput { return v.DeploymentType }).(pulumi.StringOutput) +} + +// Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. +func (o DbInstanceOutput) Endpoint() pulumi.StringOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringOutput { return v.Endpoint }).(pulumi.StringOutput) +} + +// ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. +func (o DbInstanceOutput) InfluxAuthParametersSecretArn() pulumi.StringOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringOutput { return v.InfluxAuthParametersSecretArn }).(pulumi.StringOutput) +} + +// Configuration for sending InfluxDB engine logs to a specified S3 bucket. +func (o DbInstanceOutput) LogDeliveryConfiguration() DbInstanceLogDeliveryConfigurationPtrOutput { + return o.ApplyT(func(v *DbInstance) DbInstanceLogDeliveryConfigurationPtrOutput { return v.LogDeliveryConfiguration }).(DbInstanceLogDeliveryConfigurationPtrOutput) +} + +// Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. +func (o DbInstanceOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. +func (o DbInstanceOutput) Organization() pulumi.StringOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringOutput { return v.Organization }).(pulumi.StringOutput) +} + +// Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. +func (o DbInstanceOutput) Password() pulumi.StringOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringOutput { return v.Password }).(pulumi.StringOutput) +} + +// Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. +func (o DbInstanceOutput) PubliclyAccessible() pulumi.BoolOutput { + return o.ApplyT(func(v *DbInstance) pulumi.BoolOutput { return v.PubliclyAccessible }).(pulumi.BoolOutput) +} + +// Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. +func (o DbInstanceOutput) SecondaryAvailabilityZone() pulumi.StringOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringOutput { return v.SecondaryAvailabilityZone }).(pulumi.StringOutput) +} + +// Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o DbInstanceOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o DbInstanceOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +func (o DbInstanceOutput) Timeouts() DbInstanceTimeoutsPtrOutput { + return o.ApplyT(func(v *DbInstance) DbInstanceTimeoutsPtrOutput { return v.Timeouts }).(DbInstanceTimeoutsPtrOutput) +} + +// Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. +func (o DbInstanceOutput) Username() pulumi.StringOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringOutput { return v.Username }).(pulumi.StringOutput) +} + +// List of VPC security group IDs to associate with the DB instance. +func (o DbInstanceOutput) VpcSecurityGroupIds() pulumi.StringArrayOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringArrayOutput { return v.VpcSecurityGroupIds }).(pulumi.StringArrayOutput) +} + +// List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. +// +// The following arguments are optional: +func (o DbInstanceOutput) VpcSubnetIds() pulumi.StringArrayOutput { + return o.ApplyT(func(v *DbInstance) pulumi.StringArrayOutput { return v.VpcSubnetIds }).(pulumi.StringArrayOutput) +} + +type DbInstanceArrayOutput struct{ *pulumi.OutputState } + +func (DbInstanceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*DbInstance)(nil)).Elem() +} + +func (o DbInstanceArrayOutput) ToDbInstanceArrayOutput() DbInstanceArrayOutput { + return o +} + +func (o DbInstanceArrayOutput) ToDbInstanceArrayOutputWithContext(ctx context.Context) DbInstanceArrayOutput { + return o +} + +func (o DbInstanceArrayOutput) Index(i pulumi.IntInput) DbInstanceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *DbInstance { + return vs[0].([]*DbInstance)[vs[1].(int)] + }).(DbInstanceOutput) +} + +type DbInstanceMapOutput struct{ *pulumi.OutputState } + +func (DbInstanceMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*DbInstance)(nil)).Elem() +} + +func (o DbInstanceMapOutput) ToDbInstanceMapOutput() DbInstanceMapOutput { + return o +} + +func (o DbInstanceMapOutput) ToDbInstanceMapOutputWithContext(ctx context.Context) DbInstanceMapOutput { + return o +} + +func (o DbInstanceMapOutput) MapIndex(k pulumi.StringInput) DbInstanceOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *DbInstance { + return vs[0].(map[string]*DbInstance)[vs[1].(string)] + }).(DbInstanceOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*DbInstanceInput)(nil)).Elem(), &DbInstance{}) + pulumi.RegisterInputType(reflect.TypeOf((*DbInstanceArrayInput)(nil)).Elem(), DbInstanceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*DbInstanceMapInput)(nil)).Elem(), DbInstanceMap{}) + pulumi.RegisterOutputType(DbInstanceOutput{}) + pulumi.RegisterOutputType(DbInstanceArrayOutput{}) + pulumi.RegisterOutputType(DbInstanceMapOutput{}) +} diff --git a/sdk/go/aws/timestreaminfluxdb/init.go b/sdk/go/aws/timestreaminfluxdb/init.go new file mode 100644 index 00000000000..327dac0e9f8 --- /dev/null +++ b/sdk/go/aws/timestreaminfluxdb/init.go @@ -0,0 +1,44 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package timestreaminfluxdb + +import ( + "fmt" + + "github.com/blang/semver" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "aws:timestreaminfluxdb/dbInstance:DbInstance": + r = &DbInstance{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "aws", + "timestreaminfluxdb/dbInstance", + &module{version}, + ) +} diff --git a/sdk/go/aws/timestreaminfluxdb/pulumiTypes.go b/sdk/go/aws/timestreaminfluxdb/pulumiTypes.go new file mode 100644 index 00000000000..b332389a65c --- /dev/null +++ b/sdk/go/aws/timestreaminfluxdb/pulumiTypes.go @@ -0,0 +1,507 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package timestreaminfluxdb + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +type DbInstanceLogDeliveryConfiguration struct { + // Configuration for S3 bucket log delivery. + S3Configuration *DbInstanceLogDeliveryConfigurationS3Configuration `pulumi:"s3Configuration"` +} + +// DbInstanceLogDeliveryConfigurationInput is an input type that accepts DbInstanceLogDeliveryConfigurationArgs and DbInstanceLogDeliveryConfigurationOutput values. +// You can construct a concrete instance of `DbInstanceLogDeliveryConfigurationInput` via: +// +// DbInstanceLogDeliveryConfigurationArgs{...} +type DbInstanceLogDeliveryConfigurationInput interface { + pulumi.Input + + ToDbInstanceLogDeliveryConfigurationOutput() DbInstanceLogDeliveryConfigurationOutput + ToDbInstanceLogDeliveryConfigurationOutputWithContext(context.Context) DbInstanceLogDeliveryConfigurationOutput +} + +type DbInstanceLogDeliveryConfigurationArgs struct { + // Configuration for S3 bucket log delivery. + S3Configuration DbInstanceLogDeliveryConfigurationS3ConfigurationPtrInput `pulumi:"s3Configuration"` +} + +func (DbInstanceLogDeliveryConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*DbInstanceLogDeliveryConfiguration)(nil)).Elem() +} + +func (i DbInstanceLogDeliveryConfigurationArgs) ToDbInstanceLogDeliveryConfigurationOutput() DbInstanceLogDeliveryConfigurationOutput { + return i.ToDbInstanceLogDeliveryConfigurationOutputWithContext(context.Background()) +} + +func (i DbInstanceLogDeliveryConfigurationArgs) ToDbInstanceLogDeliveryConfigurationOutputWithContext(ctx context.Context) DbInstanceLogDeliveryConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(DbInstanceLogDeliveryConfigurationOutput) +} + +func (i DbInstanceLogDeliveryConfigurationArgs) ToDbInstanceLogDeliveryConfigurationPtrOutput() DbInstanceLogDeliveryConfigurationPtrOutput { + return i.ToDbInstanceLogDeliveryConfigurationPtrOutputWithContext(context.Background()) +} + +func (i DbInstanceLogDeliveryConfigurationArgs) ToDbInstanceLogDeliveryConfigurationPtrOutputWithContext(ctx context.Context) DbInstanceLogDeliveryConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DbInstanceLogDeliveryConfigurationOutput).ToDbInstanceLogDeliveryConfigurationPtrOutputWithContext(ctx) +} + +// DbInstanceLogDeliveryConfigurationPtrInput is an input type that accepts DbInstanceLogDeliveryConfigurationArgs, DbInstanceLogDeliveryConfigurationPtr and DbInstanceLogDeliveryConfigurationPtrOutput values. +// You can construct a concrete instance of `DbInstanceLogDeliveryConfigurationPtrInput` via: +// +// DbInstanceLogDeliveryConfigurationArgs{...} +// +// or: +// +// nil +type DbInstanceLogDeliveryConfigurationPtrInput interface { + pulumi.Input + + ToDbInstanceLogDeliveryConfigurationPtrOutput() DbInstanceLogDeliveryConfigurationPtrOutput + ToDbInstanceLogDeliveryConfigurationPtrOutputWithContext(context.Context) DbInstanceLogDeliveryConfigurationPtrOutput +} + +type dbInstanceLogDeliveryConfigurationPtrType DbInstanceLogDeliveryConfigurationArgs + +func DbInstanceLogDeliveryConfigurationPtr(v *DbInstanceLogDeliveryConfigurationArgs) DbInstanceLogDeliveryConfigurationPtrInput { + return (*dbInstanceLogDeliveryConfigurationPtrType)(v) +} + +func (*dbInstanceLogDeliveryConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**DbInstanceLogDeliveryConfiguration)(nil)).Elem() +} + +func (i *dbInstanceLogDeliveryConfigurationPtrType) ToDbInstanceLogDeliveryConfigurationPtrOutput() DbInstanceLogDeliveryConfigurationPtrOutput { + return i.ToDbInstanceLogDeliveryConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *dbInstanceLogDeliveryConfigurationPtrType) ToDbInstanceLogDeliveryConfigurationPtrOutputWithContext(ctx context.Context) DbInstanceLogDeliveryConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DbInstanceLogDeliveryConfigurationPtrOutput) +} + +type DbInstanceLogDeliveryConfigurationOutput struct{ *pulumi.OutputState } + +func (DbInstanceLogDeliveryConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*DbInstanceLogDeliveryConfiguration)(nil)).Elem() +} + +func (o DbInstanceLogDeliveryConfigurationOutput) ToDbInstanceLogDeliveryConfigurationOutput() DbInstanceLogDeliveryConfigurationOutput { + return o +} + +func (o DbInstanceLogDeliveryConfigurationOutput) ToDbInstanceLogDeliveryConfigurationOutputWithContext(ctx context.Context) DbInstanceLogDeliveryConfigurationOutput { + return o +} + +func (o DbInstanceLogDeliveryConfigurationOutput) ToDbInstanceLogDeliveryConfigurationPtrOutput() DbInstanceLogDeliveryConfigurationPtrOutput { + return o.ToDbInstanceLogDeliveryConfigurationPtrOutputWithContext(context.Background()) +} + +func (o DbInstanceLogDeliveryConfigurationOutput) ToDbInstanceLogDeliveryConfigurationPtrOutputWithContext(ctx context.Context) DbInstanceLogDeliveryConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v DbInstanceLogDeliveryConfiguration) *DbInstanceLogDeliveryConfiguration { + return &v + }).(DbInstanceLogDeliveryConfigurationPtrOutput) +} + +// Configuration for S3 bucket log delivery. +func (o DbInstanceLogDeliveryConfigurationOutput) S3Configuration() DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput { + return o.ApplyT(func(v DbInstanceLogDeliveryConfiguration) *DbInstanceLogDeliveryConfigurationS3Configuration { + return v.S3Configuration + }).(DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput) +} + +type DbInstanceLogDeliveryConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (DbInstanceLogDeliveryConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DbInstanceLogDeliveryConfiguration)(nil)).Elem() +} + +func (o DbInstanceLogDeliveryConfigurationPtrOutput) ToDbInstanceLogDeliveryConfigurationPtrOutput() DbInstanceLogDeliveryConfigurationPtrOutput { + return o +} + +func (o DbInstanceLogDeliveryConfigurationPtrOutput) ToDbInstanceLogDeliveryConfigurationPtrOutputWithContext(ctx context.Context) DbInstanceLogDeliveryConfigurationPtrOutput { + return o +} + +func (o DbInstanceLogDeliveryConfigurationPtrOutput) Elem() DbInstanceLogDeliveryConfigurationOutput { + return o.ApplyT(func(v *DbInstanceLogDeliveryConfiguration) DbInstanceLogDeliveryConfiguration { + if v != nil { + return *v + } + var ret DbInstanceLogDeliveryConfiguration + return ret + }).(DbInstanceLogDeliveryConfigurationOutput) +} + +// Configuration for S3 bucket log delivery. +func (o DbInstanceLogDeliveryConfigurationPtrOutput) S3Configuration() DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput { + return o.ApplyT(func(v *DbInstanceLogDeliveryConfiguration) *DbInstanceLogDeliveryConfigurationS3Configuration { + if v == nil { + return nil + } + return v.S3Configuration + }).(DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput) +} + +type DbInstanceLogDeliveryConfigurationS3Configuration struct { + // Name of the S3 bucket to deliver logs to. + BucketName string `pulumi:"bucketName"` + // Indicates whether log delivery to the S3 bucket is enabled. + // + // **Note**: Only three arguments do updates in-place: `dbParameterGroupIdentifier`, `logDeliveryConfiguration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `dbParameterGroupIdentifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `dbParameterGroupIdentifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + Enabled bool `pulumi:"enabled"` +} + +// DbInstanceLogDeliveryConfigurationS3ConfigurationInput is an input type that accepts DbInstanceLogDeliveryConfigurationS3ConfigurationArgs and DbInstanceLogDeliveryConfigurationS3ConfigurationOutput values. +// You can construct a concrete instance of `DbInstanceLogDeliveryConfigurationS3ConfigurationInput` via: +// +// DbInstanceLogDeliveryConfigurationS3ConfigurationArgs{...} +type DbInstanceLogDeliveryConfigurationS3ConfigurationInput interface { + pulumi.Input + + ToDbInstanceLogDeliveryConfigurationS3ConfigurationOutput() DbInstanceLogDeliveryConfigurationS3ConfigurationOutput + ToDbInstanceLogDeliveryConfigurationS3ConfigurationOutputWithContext(context.Context) DbInstanceLogDeliveryConfigurationS3ConfigurationOutput +} + +type DbInstanceLogDeliveryConfigurationS3ConfigurationArgs struct { + // Name of the S3 bucket to deliver logs to. + BucketName pulumi.StringInput `pulumi:"bucketName"` + // Indicates whether log delivery to the S3 bucket is enabled. + // + // **Note**: Only three arguments do updates in-place: `dbParameterGroupIdentifier`, `logDeliveryConfiguration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `dbParameterGroupIdentifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `dbParameterGroupIdentifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + Enabled pulumi.BoolInput `pulumi:"enabled"` +} + +func (DbInstanceLogDeliveryConfigurationS3ConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*DbInstanceLogDeliveryConfigurationS3Configuration)(nil)).Elem() +} + +func (i DbInstanceLogDeliveryConfigurationS3ConfigurationArgs) ToDbInstanceLogDeliveryConfigurationS3ConfigurationOutput() DbInstanceLogDeliveryConfigurationS3ConfigurationOutput { + return i.ToDbInstanceLogDeliveryConfigurationS3ConfigurationOutputWithContext(context.Background()) +} + +func (i DbInstanceLogDeliveryConfigurationS3ConfigurationArgs) ToDbInstanceLogDeliveryConfigurationS3ConfigurationOutputWithContext(ctx context.Context) DbInstanceLogDeliveryConfigurationS3ConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(DbInstanceLogDeliveryConfigurationS3ConfigurationOutput) +} + +func (i DbInstanceLogDeliveryConfigurationS3ConfigurationArgs) ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput() DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput { + return i.ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutputWithContext(context.Background()) +} + +func (i DbInstanceLogDeliveryConfigurationS3ConfigurationArgs) ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutputWithContext(ctx context.Context) DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DbInstanceLogDeliveryConfigurationS3ConfigurationOutput).ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutputWithContext(ctx) +} + +// DbInstanceLogDeliveryConfigurationS3ConfigurationPtrInput is an input type that accepts DbInstanceLogDeliveryConfigurationS3ConfigurationArgs, DbInstanceLogDeliveryConfigurationS3ConfigurationPtr and DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput values. +// You can construct a concrete instance of `DbInstanceLogDeliveryConfigurationS3ConfigurationPtrInput` via: +// +// DbInstanceLogDeliveryConfigurationS3ConfigurationArgs{...} +// +// or: +// +// nil +type DbInstanceLogDeliveryConfigurationS3ConfigurationPtrInput interface { + pulumi.Input + + ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput() DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput + ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutputWithContext(context.Context) DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput +} + +type dbInstanceLogDeliveryConfigurationS3ConfigurationPtrType DbInstanceLogDeliveryConfigurationS3ConfigurationArgs + +func DbInstanceLogDeliveryConfigurationS3ConfigurationPtr(v *DbInstanceLogDeliveryConfigurationS3ConfigurationArgs) DbInstanceLogDeliveryConfigurationS3ConfigurationPtrInput { + return (*dbInstanceLogDeliveryConfigurationS3ConfigurationPtrType)(v) +} + +func (*dbInstanceLogDeliveryConfigurationS3ConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**DbInstanceLogDeliveryConfigurationS3Configuration)(nil)).Elem() +} + +func (i *dbInstanceLogDeliveryConfigurationS3ConfigurationPtrType) ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput() DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput { + return i.ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *dbInstanceLogDeliveryConfigurationS3ConfigurationPtrType) ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutputWithContext(ctx context.Context) DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput) +} + +type DbInstanceLogDeliveryConfigurationS3ConfigurationOutput struct{ *pulumi.OutputState } + +func (DbInstanceLogDeliveryConfigurationS3ConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*DbInstanceLogDeliveryConfigurationS3Configuration)(nil)).Elem() +} + +func (o DbInstanceLogDeliveryConfigurationS3ConfigurationOutput) ToDbInstanceLogDeliveryConfigurationS3ConfigurationOutput() DbInstanceLogDeliveryConfigurationS3ConfigurationOutput { + return o +} + +func (o DbInstanceLogDeliveryConfigurationS3ConfigurationOutput) ToDbInstanceLogDeliveryConfigurationS3ConfigurationOutputWithContext(ctx context.Context) DbInstanceLogDeliveryConfigurationS3ConfigurationOutput { + return o +} + +func (o DbInstanceLogDeliveryConfigurationS3ConfigurationOutput) ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput() DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput { + return o.ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutputWithContext(context.Background()) +} + +func (o DbInstanceLogDeliveryConfigurationS3ConfigurationOutput) ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutputWithContext(ctx context.Context) DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v DbInstanceLogDeliveryConfigurationS3Configuration) *DbInstanceLogDeliveryConfigurationS3Configuration { + return &v + }).(DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput) +} + +// Name of the S3 bucket to deliver logs to. +func (o DbInstanceLogDeliveryConfigurationS3ConfigurationOutput) BucketName() pulumi.StringOutput { + return o.ApplyT(func(v DbInstanceLogDeliveryConfigurationS3Configuration) string { return v.BucketName }).(pulumi.StringOutput) +} + +// Indicates whether log delivery to the S3 bucket is enabled. +// +// **Note**: Only three arguments do updates in-place: `dbParameterGroupIdentifier`, `logDeliveryConfiguration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `dbParameterGroupIdentifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `dbParameterGroupIdentifier` is removed from a DB instance, the DB instance will be destroyed and re-created. +func (o DbInstanceLogDeliveryConfigurationS3ConfigurationOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v DbInstanceLogDeliveryConfigurationS3Configuration) bool { return v.Enabled }).(pulumi.BoolOutput) +} + +type DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DbInstanceLogDeliveryConfigurationS3Configuration)(nil)).Elem() +} + +func (o DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput) ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput() DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput { + return o +} + +func (o DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput) ToDbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutputWithContext(ctx context.Context) DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput { + return o +} + +func (o DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput) Elem() DbInstanceLogDeliveryConfigurationS3ConfigurationOutput { + return o.ApplyT(func(v *DbInstanceLogDeliveryConfigurationS3Configuration) DbInstanceLogDeliveryConfigurationS3Configuration { + if v != nil { + return *v + } + var ret DbInstanceLogDeliveryConfigurationS3Configuration + return ret + }).(DbInstanceLogDeliveryConfigurationS3ConfigurationOutput) +} + +// Name of the S3 bucket to deliver logs to. +func (o DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput) BucketName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DbInstanceLogDeliveryConfigurationS3Configuration) *string { + if v == nil { + return nil + } + return &v.BucketName + }).(pulumi.StringPtrOutput) +} + +// Indicates whether log delivery to the S3 bucket is enabled. +// +// **Note**: Only three arguments do updates in-place: `dbParameterGroupIdentifier`, `logDeliveryConfiguration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `dbParameterGroupIdentifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `dbParameterGroupIdentifier` is removed from a DB instance, the DB instance will be destroyed and re-created. +func (o DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *DbInstanceLogDeliveryConfigurationS3Configuration) *bool { + if v == nil { + return nil + } + return &v.Enabled + }).(pulumi.BoolPtrOutput) +} + +type DbInstanceTimeouts struct { + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + Create *string `pulumi:"create"` + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + Delete *string `pulumi:"delete"` + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + Update *string `pulumi:"update"` +} + +// DbInstanceTimeoutsInput is an input type that accepts DbInstanceTimeoutsArgs and DbInstanceTimeoutsOutput values. +// You can construct a concrete instance of `DbInstanceTimeoutsInput` via: +// +// DbInstanceTimeoutsArgs{...} +type DbInstanceTimeoutsInput interface { + pulumi.Input + + ToDbInstanceTimeoutsOutput() DbInstanceTimeoutsOutput + ToDbInstanceTimeoutsOutputWithContext(context.Context) DbInstanceTimeoutsOutput +} + +type DbInstanceTimeoutsArgs struct { + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + Create pulumi.StringPtrInput `pulumi:"create"` + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + Delete pulumi.StringPtrInput `pulumi:"delete"` + // A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + Update pulumi.StringPtrInput `pulumi:"update"` +} + +func (DbInstanceTimeoutsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*DbInstanceTimeouts)(nil)).Elem() +} + +func (i DbInstanceTimeoutsArgs) ToDbInstanceTimeoutsOutput() DbInstanceTimeoutsOutput { + return i.ToDbInstanceTimeoutsOutputWithContext(context.Background()) +} + +func (i DbInstanceTimeoutsArgs) ToDbInstanceTimeoutsOutputWithContext(ctx context.Context) DbInstanceTimeoutsOutput { + return pulumi.ToOutputWithContext(ctx, i).(DbInstanceTimeoutsOutput) +} + +func (i DbInstanceTimeoutsArgs) ToDbInstanceTimeoutsPtrOutput() DbInstanceTimeoutsPtrOutput { + return i.ToDbInstanceTimeoutsPtrOutputWithContext(context.Background()) +} + +func (i DbInstanceTimeoutsArgs) ToDbInstanceTimeoutsPtrOutputWithContext(ctx context.Context) DbInstanceTimeoutsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DbInstanceTimeoutsOutput).ToDbInstanceTimeoutsPtrOutputWithContext(ctx) +} + +// DbInstanceTimeoutsPtrInput is an input type that accepts DbInstanceTimeoutsArgs, DbInstanceTimeoutsPtr and DbInstanceTimeoutsPtrOutput values. +// You can construct a concrete instance of `DbInstanceTimeoutsPtrInput` via: +// +// DbInstanceTimeoutsArgs{...} +// +// or: +// +// nil +type DbInstanceTimeoutsPtrInput interface { + pulumi.Input + + ToDbInstanceTimeoutsPtrOutput() DbInstanceTimeoutsPtrOutput + ToDbInstanceTimeoutsPtrOutputWithContext(context.Context) DbInstanceTimeoutsPtrOutput +} + +type dbInstanceTimeoutsPtrType DbInstanceTimeoutsArgs + +func DbInstanceTimeoutsPtr(v *DbInstanceTimeoutsArgs) DbInstanceTimeoutsPtrInput { + return (*dbInstanceTimeoutsPtrType)(v) +} + +func (*dbInstanceTimeoutsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**DbInstanceTimeouts)(nil)).Elem() +} + +func (i *dbInstanceTimeoutsPtrType) ToDbInstanceTimeoutsPtrOutput() DbInstanceTimeoutsPtrOutput { + return i.ToDbInstanceTimeoutsPtrOutputWithContext(context.Background()) +} + +func (i *dbInstanceTimeoutsPtrType) ToDbInstanceTimeoutsPtrOutputWithContext(ctx context.Context) DbInstanceTimeoutsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DbInstanceTimeoutsPtrOutput) +} + +type DbInstanceTimeoutsOutput struct{ *pulumi.OutputState } + +func (DbInstanceTimeoutsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*DbInstanceTimeouts)(nil)).Elem() +} + +func (o DbInstanceTimeoutsOutput) ToDbInstanceTimeoutsOutput() DbInstanceTimeoutsOutput { + return o +} + +func (o DbInstanceTimeoutsOutput) ToDbInstanceTimeoutsOutputWithContext(ctx context.Context) DbInstanceTimeoutsOutput { + return o +} + +func (o DbInstanceTimeoutsOutput) ToDbInstanceTimeoutsPtrOutput() DbInstanceTimeoutsPtrOutput { + return o.ToDbInstanceTimeoutsPtrOutputWithContext(context.Background()) +} + +func (o DbInstanceTimeoutsOutput) ToDbInstanceTimeoutsPtrOutputWithContext(ctx context.Context) DbInstanceTimeoutsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v DbInstanceTimeouts) *DbInstanceTimeouts { + return &v + }).(DbInstanceTimeoutsPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). +func (o DbInstanceTimeoutsOutput) Create() pulumi.StringPtrOutput { + return o.ApplyT(func(v DbInstanceTimeouts) *string { return v.Create }).(pulumi.StringPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. +func (o DbInstanceTimeoutsOutput) Delete() pulumi.StringPtrOutput { + return o.ApplyT(func(v DbInstanceTimeouts) *string { return v.Delete }).(pulumi.StringPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). +func (o DbInstanceTimeoutsOutput) Update() pulumi.StringPtrOutput { + return o.ApplyT(func(v DbInstanceTimeouts) *string { return v.Update }).(pulumi.StringPtrOutput) +} + +type DbInstanceTimeoutsPtrOutput struct{ *pulumi.OutputState } + +func (DbInstanceTimeoutsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DbInstanceTimeouts)(nil)).Elem() +} + +func (o DbInstanceTimeoutsPtrOutput) ToDbInstanceTimeoutsPtrOutput() DbInstanceTimeoutsPtrOutput { + return o +} + +func (o DbInstanceTimeoutsPtrOutput) ToDbInstanceTimeoutsPtrOutputWithContext(ctx context.Context) DbInstanceTimeoutsPtrOutput { + return o +} + +func (o DbInstanceTimeoutsPtrOutput) Elem() DbInstanceTimeoutsOutput { + return o.ApplyT(func(v *DbInstanceTimeouts) DbInstanceTimeouts { + if v != nil { + return *v + } + var ret DbInstanceTimeouts + return ret + }).(DbInstanceTimeoutsOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). +func (o DbInstanceTimeoutsPtrOutput) Create() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DbInstanceTimeouts) *string { + if v == nil { + return nil + } + return v.Create + }).(pulumi.StringPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. +func (o DbInstanceTimeoutsPtrOutput) Delete() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DbInstanceTimeouts) *string { + if v == nil { + return nil + } + return v.Delete + }).(pulumi.StringPtrOutput) +} + +// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). +func (o DbInstanceTimeoutsPtrOutput) Update() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DbInstanceTimeouts) *string { + if v == nil { + return nil + } + return v.Update + }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*DbInstanceLogDeliveryConfigurationInput)(nil)).Elem(), DbInstanceLogDeliveryConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DbInstanceLogDeliveryConfigurationPtrInput)(nil)).Elem(), DbInstanceLogDeliveryConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DbInstanceLogDeliveryConfigurationS3ConfigurationInput)(nil)).Elem(), DbInstanceLogDeliveryConfigurationS3ConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DbInstanceLogDeliveryConfigurationS3ConfigurationPtrInput)(nil)).Elem(), DbInstanceLogDeliveryConfigurationS3ConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DbInstanceTimeoutsInput)(nil)).Elem(), DbInstanceTimeoutsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DbInstanceTimeoutsPtrInput)(nil)).Elem(), DbInstanceTimeoutsArgs{}) + pulumi.RegisterOutputType(DbInstanceLogDeliveryConfigurationOutput{}) + pulumi.RegisterOutputType(DbInstanceLogDeliveryConfigurationPtrOutput{}) + pulumi.RegisterOutputType(DbInstanceLogDeliveryConfigurationS3ConfigurationOutput{}) + pulumi.RegisterOutputType(DbInstanceLogDeliveryConfigurationS3ConfigurationPtrOutput{}) + pulumi.RegisterOutputType(DbInstanceTimeoutsOutput{}) + pulumi.RegisterOutputType(DbInstanceTimeoutsPtrOutput{}) +} diff --git a/sdk/go/aws/wafv2/webAcl.go b/sdk/go/aws/wafv2/webAcl.go index 512bd6886e6..b9cd27499a7 100644 --- a/sdk/go/aws/wafv2/webAcl.go +++ b/sdk/go/aws/wafv2/webAcl.go @@ -36,6 +36,8 @@ type WebAcl struct { LockToken pulumi.StringOutput `pulumi:"lockToken"` // Friendly name of the WebACL. Name pulumi.StringOutput `pulumi:"name"` + // Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + RuleJson pulumi.StringPtrOutput `pulumi:"ruleJson"` // Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. Rules WebAclRuleArrayOutput `pulumi:"rules"` // Specifies whether this is for an AWS CloudFront distribution or for a regional application. Valid values are `CLOUDFRONT` or `REGIONAL`. To work with CloudFront, you must also specify the region `us-east-1` (N. Virginia) on the AWS provider. @@ -112,6 +114,8 @@ type webAclState struct { LockToken *string `pulumi:"lockToken"` // Friendly name of the WebACL. Name *string `pulumi:"name"` + // Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + RuleJson *string `pulumi:"ruleJson"` // Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. Rules []WebAclRule `pulumi:"rules"` // Specifies whether this is for an AWS CloudFront distribution or for a regional application. Valid values are `CLOUDFRONT` or `REGIONAL`. To work with CloudFront, you must also specify the region `us-east-1` (N. Virginia) on the AWS provider. @@ -150,6 +154,8 @@ type WebAclState struct { LockToken pulumi.StringPtrInput // Friendly name of the WebACL. Name pulumi.StringPtrInput + // Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + RuleJson pulumi.StringPtrInput // Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. Rules WebAclRuleArrayInput // Specifies whether this is for an AWS CloudFront distribution or for a regional application. Valid values are `CLOUDFRONT` or `REGIONAL`. To work with CloudFront, you must also specify the region `us-east-1` (N. Virginia) on the AWS provider. @@ -185,6 +191,8 @@ type webAclArgs struct { Description *string `pulumi:"description"` // Friendly name of the WebACL. Name *string `pulumi:"name"` + // Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + RuleJson *string `pulumi:"ruleJson"` // Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. Rules []WebAclRule `pulumi:"rules"` // Specifies whether this is for an AWS CloudFront distribution or for a regional application. Valid values are `CLOUDFRONT` or `REGIONAL`. To work with CloudFront, you must also specify the region `us-east-1` (N. Virginia) on the AWS provider. @@ -213,6 +221,8 @@ type WebAclArgs struct { Description pulumi.StringPtrInput // Friendly name of the WebACL. Name pulumi.StringPtrInput + // Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + RuleJson pulumi.StringPtrInput // Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. Rules WebAclRuleArrayInput // Specifies whether this is for an AWS CloudFront distribution or for a regional application. Valid values are `CLOUDFRONT` or `REGIONAL`. To work with CloudFront, you must also specify the region `us-east-1` (N. Virginia) on the AWS provider. @@ -366,6 +376,11 @@ func (o WebAclOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v *WebAcl) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) } +// Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. +func (o WebAclOutput) RuleJson() pulumi.StringPtrOutput { + return o.ApplyT(func(v *WebAcl) pulumi.StringPtrOutput { return v.RuleJson }).(pulumi.StringPtrOutput) +} + // Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. func (o WebAclOutput) Rules() WebAclRuleArrayOutput { return o.ApplyT(func(v *WebAcl) WebAclRuleArrayOutput { return v.Rules }).(WebAclRuleArrayOutput) 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 c695a0d32c4..0d14980836b 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 @@ -7,6 +7,7 @@ import com.pulumi.aws.appsync.GraphQLApiArgs; import com.pulumi.aws.appsync.inputs.GraphQLApiState; import com.pulumi.aws.appsync.outputs.GraphQLApiAdditionalAuthenticationProvider; +import com.pulumi.aws.appsync.outputs.GraphQLApiEnhancedMetricsConfig; import com.pulumi.aws.appsync.outputs.GraphQLApiLambdaAuthorizerConfig; import com.pulumi.aws.appsync.outputs.GraphQLApiLogConfig; import com.pulumi.aws.appsync.outputs.GraphQLApiOpenidConnectConfig; @@ -67,6 +68,20 @@ public Output arn() { public Output authenticationType() { return this.authenticationType; } + /** + * Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + * + */ + @Export(name="enhancedMetricsConfig", refs={GraphQLApiEnhancedMetricsConfig.class}, tree="[0]") + private Output enhancedMetricsConfig; + + /** + * @return Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + * + */ + public Output> enhancedMetricsConfig() { + return Codegen.optional(this.enhancedMetricsConfig); + } /** * Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). * @@ -112,6 +127,8 @@ public Output> logConfig() { /** * User-supplied name for the GraphSQL API. * + * The following arguments are optional: + * */ @Export(name="name", refs={String.class}, tree="[0]") private Output name; @@ -119,6 +136,8 @@ public Output> logConfig() { /** * @return User-supplied name for the GraphSQL API. * + * The following arguments are optional: + * */ public Output name() { return this.name; diff --git a/sdk/java/src/main/java/com/pulumi/aws/appsync/GraphQLApiArgs.java b/sdk/java/src/main/java/com/pulumi/aws/appsync/GraphQLApiArgs.java index 5ac6b0c2246..1e29b61a43a 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/appsync/GraphQLApiArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/appsync/GraphQLApiArgs.java @@ -4,6 +4,7 @@ package com.pulumi.aws.appsync; import com.pulumi.aws.appsync.inputs.GraphQLApiAdditionalAuthenticationProviderArgs; +import com.pulumi.aws.appsync.inputs.GraphQLApiEnhancedMetricsConfigArgs; import com.pulumi.aws.appsync.inputs.GraphQLApiLambdaAuthorizerConfigArgs; import com.pulumi.aws.appsync.inputs.GraphQLApiLogConfigArgs; import com.pulumi.aws.appsync.inputs.GraphQLApiOpenidConnectConfigArgs; @@ -55,6 +56,21 @@ public Output authenticationType() { return this.authenticationType; } + /** + * Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + * + */ + @Import(name="enhancedMetricsConfig") + private @Nullable Output enhancedMetricsConfig; + + /** + * @return Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + * + */ + public Optional> enhancedMetricsConfig() { + return Optional.ofNullable(this.enhancedMetricsConfig); + } + /** * Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). * @@ -103,6 +119,8 @@ public Optional> logConfig() { /** * User-supplied name for the GraphSQL API. * + * The following arguments are optional: + * */ @Import(name="name") private @Nullable Output name; @@ -110,6 +128,8 @@ public Optional> logConfig() { /** * @return User-supplied name for the GraphSQL API. * + * The following arguments are optional: + * */ public Optional> name() { return Optional.ofNullable(this.name); @@ -244,6 +264,7 @@ private GraphQLApiArgs() {} private GraphQLApiArgs(GraphQLApiArgs $) { this.additionalAuthenticationProviders = $.additionalAuthenticationProviders; this.authenticationType = $.authenticationType; + this.enhancedMetricsConfig = $.enhancedMetricsConfig; this.introspectionConfig = $.introspectionConfig; this.lambdaAuthorizerConfig = $.lambdaAuthorizerConfig; this.logConfig = $.logConfig; @@ -328,6 +349,27 @@ public Builder authenticationType(String authenticationType) { return authenticationType(Output.of(authenticationType)); } + /** + * @param enhancedMetricsConfig Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + * + * @return builder + * + */ + public Builder enhancedMetricsConfig(@Nullable Output enhancedMetricsConfig) { + $.enhancedMetricsConfig = enhancedMetricsConfig; + return this; + } + + /** + * @param enhancedMetricsConfig Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + * + * @return builder + * + */ + public Builder enhancedMetricsConfig(GraphQLApiEnhancedMetricsConfigArgs enhancedMetricsConfig) { + return enhancedMetricsConfig(Output.of(enhancedMetricsConfig)); + } + /** * @param introspectionConfig Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). * @@ -394,6 +436,8 @@ public Builder logConfig(GraphQLApiLogConfigArgs logConfig) { /** * @param name User-supplied name for the GraphSQL API. * + * The following arguments are optional: + * * @return builder * */ @@ -405,6 +449,8 @@ public Builder name(@Nullable Output name) { /** * @param name User-supplied name for the GraphSQL API. * + * The following arguments are optional: + * * @return builder * */ diff --git a/sdk/java/src/main/java/com/pulumi/aws/appsync/inputs/GraphQLApiEnhancedMetricsConfigArgs.java b/sdk/java/src/main/java/com/pulumi/aws/appsync/inputs/GraphQLApiEnhancedMetricsConfigArgs.java new file mode 100644 index 00000000000..75da98d3717 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/appsync/inputs/GraphQLApiEnhancedMetricsConfigArgs.java @@ -0,0 +1,165 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.appsync.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class GraphQLApiEnhancedMetricsConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final GraphQLApiEnhancedMetricsConfigArgs Empty = new GraphQLApiEnhancedMetricsConfigArgs(); + + /** + * How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + * + */ + @Import(name="dataSourceLevelMetricsBehavior", required=true) + private Output dataSourceLevelMetricsBehavior; + + /** + * @return How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + * + */ + public Output dataSourceLevelMetricsBehavior() { + return this.dataSourceLevelMetricsBehavior; + } + + /** + * How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + * + */ + @Import(name="operationLevelMetricsConfig", required=true) + private Output operationLevelMetricsConfig; + + /** + * @return How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + * + */ + public Output operationLevelMetricsConfig() { + return this.operationLevelMetricsConfig; + } + + /** + * How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + * + */ + @Import(name="resolverLevelMetricsBehavior", required=true) + private Output resolverLevelMetricsBehavior; + + /** + * @return How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + * + */ + public Output resolverLevelMetricsBehavior() { + return this.resolverLevelMetricsBehavior; + } + + private GraphQLApiEnhancedMetricsConfigArgs() {} + + private GraphQLApiEnhancedMetricsConfigArgs(GraphQLApiEnhancedMetricsConfigArgs $) { + this.dataSourceLevelMetricsBehavior = $.dataSourceLevelMetricsBehavior; + this.operationLevelMetricsConfig = $.operationLevelMetricsConfig; + this.resolverLevelMetricsBehavior = $.resolverLevelMetricsBehavior; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GraphQLApiEnhancedMetricsConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GraphQLApiEnhancedMetricsConfigArgs $; + + public Builder() { + $ = new GraphQLApiEnhancedMetricsConfigArgs(); + } + + public Builder(GraphQLApiEnhancedMetricsConfigArgs defaults) { + $ = new GraphQLApiEnhancedMetricsConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param dataSourceLevelMetricsBehavior How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + * + * @return builder + * + */ + public Builder dataSourceLevelMetricsBehavior(Output dataSourceLevelMetricsBehavior) { + $.dataSourceLevelMetricsBehavior = dataSourceLevelMetricsBehavior; + return this; + } + + /** + * @param dataSourceLevelMetricsBehavior How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + * + * @return builder + * + */ + public Builder dataSourceLevelMetricsBehavior(String dataSourceLevelMetricsBehavior) { + return dataSourceLevelMetricsBehavior(Output.of(dataSourceLevelMetricsBehavior)); + } + + /** + * @param operationLevelMetricsConfig How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + * + * @return builder + * + */ + public Builder operationLevelMetricsConfig(Output operationLevelMetricsConfig) { + $.operationLevelMetricsConfig = operationLevelMetricsConfig; + return this; + } + + /** + * @param operationLevelMetricsConfig How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + * + * @return builder + * + */ + public Builder operationLevelMetricsConfig(String operationLevelMetricsConfig) { + return operationLevelMetricsConfig(Output.of(operationLevelMetricsConfig)); + } + + /** + * @param resolverLevelMetricsBehavior How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + * + * @return builder + * + */ + public Builder resolverLevelMetricsBehavior(Output resolverLevelMetricsBehavior) { + $.resolverLevelMetricsBehavior = resolverLevelMetricsBehavior; + return this; + } + + /** + * @param resolverLevelMetricsBehavior How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + * + * @return builder + * + */ + public Builder resolverLevelMetricsBehavior(String resolverLevelMetricsBehavior) { + return resolverLevelMetricsBehavior(Output.of(resolverLevelMetricsBehavior)); + } + + public GraphQLApiEnhancedMetricsConfigArgs build() { + if ($.dataSourceLevelMetricsBehavior == null) { + throw new MissingRequiredPropertyException("GraphQLApiEnhancedMetricsConfigArgs", "dataSourceLevelMetricsBehavior"); + } + if ($.operationLevelMetricsConfig == null) { + throw new MissingRequiredPropertyException("GraphQLApiEnhancedMetricsConfigArgs", "operationLevelMetricsConfig"); + } + if ($.resolverLevelMetricsBehavior == null) { + throw new MissingRequiredPropertyException("GraphQLApiEnhancedMetricsConfigArgs", "resolverLevelMetricsBehavior"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/appsync/inputs/GraphQLApiState.java b/sdk/java/src/main/java/com/pulumi/aws/appsync/inputs/GraphQLApiState.java index d88f3a18586..711e54112ec 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/appsync/inputs/GraphQLApiState.java +++ b/sdk/java/src/main/java/com/pulumi/aws/appsync/inputs/GraphQLApiState.java @@ -4,6 +4,7 @@ package com.pulumi.aws.appsync.inputs; import com.pulumi.aws.appsync.inputs.GraphQLApiAdditionalAuthenticationProviderArgs; +import com.pulumi.aws.appsync.inputs.GraphQLApiEnhancedMetricsConfigArgs; import com.pulumi.aws.appsync.inputs.GraphQLApiLambdaAuthorizerConfigArgs; import com.pulumi.aws.appsync.inputs.GraphQLApiLogConfigArgs; import com.pulumi.aws.appsync.inputs.GraphQLApiOpenidConnectConfigArgs; @@ -69,6 +70,21 @@ public Optional> authenticationType() { return Optional.ofNullable(this.authenticationType); } + /** + * Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + * + */ + @Import(name="enhancedMetricsConfig") + private @Nullable Output enhancedMetricsConfig; + + /** + * @return Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + * + */ + public Optional> enhancedMetricsConfig() { + return Optional.ofNullable(this.enhancedMetricsConfig); + } + /** * Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). * @@ -117,6 +133,8 @@ public Optional> logConfig() { /** * User-supplied name for the GraphSQL API. * + * The following arguments are optional: + * */ @Import(name="name") private @Nullable Output name; @@ -124,6 +142,8 @@ public Optional> logConfig() { /** * @return User-supplied name for the GraphSQL API. * + * The following arguments are optional: + * */ public Optional> name() { return Optional.ofNullable(this.name); @@ -297,6 +317,7 @@ private GraphQLApiState(GraphQLApiState $) { this.additionalAuthenticationProviders = $.additionalAuthenticationProviders; this.arn = $.arn; this.authenticationType = $.authenticationType; + this.enhancedMetricsConfig = $.enhancedMetricsConfig; this.introspectionConfig = $.introspectionConfig; this.lambdaAuthorizerConfig = $.lambdaAuthorizerConfig; this.logConfig = $.logConfig; @@ -404,6 +425,27 @@ public Builder authenticationType(String authenticationType) { return authenticationType(Output.of(authenticationType)); } + /** + * @param enhancedMetricsConfig Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + * + * @return builder + * + */ + public Builder enhancedMetricsConfig(@Nullable Output enhancedMetricsConfig) { + $.enhancedMetricsConfig = enhancedMetricsConfig; + return this; + } + + /** + * @param enhancedMetricsConfig Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + * + * @return builder + * + */ + public Builder enhancedMetricsConfig(GraphQLApiEnhancedMetricsConfigArgs enhancedMetricsConfig) { + return enhancedMetricsConfig(Output.of(enhancedMetricsConfig)); + } + /** * @param introspectionConfig Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). * @@ -470,6 +512,8 @@ public Builder logConfig(GraphQLApiLogConfigArgs logConfig) { /** * @param name User-supplied name for the GraphSQL API. * + * The following arguments are optional: + * * @return builder * */ @@ -481,6 +525,8 @@ public Builder name(@Nullable Output name) { /** * @param name User-supplied name for the GraphSQL API. * + * The following arguments are optional: + * * @return builder * */ diff --git a/sdk/java/src/main/java/com/pulumi/aws/appsync/outputs/GraphQLApiEnhancedMetricsConfig.java b/sdk/java/src/main/java/com/pulumi/aws/appsync/outputs/GraphQLApiEnhancedMetricsConfig.java new file mode 100644 index 00000000000..ab36a92e57a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/appsync/outputs/GraphQLApiEnhancedMetricsConfig.java @@ -0,0 +1,104 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.appsync.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GraphQLApiEnhancedMetricsConfig { + /** + * @return How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + * + */ + private String dataSourceLevelMetricsBehavior; + /** + * @return How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + * + */ + private String operationLevelMetricsConfig; + /** + * @return How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + * + */ + private String resolverLevelMetricsBehavior; + + private GraphQLApiEnhancedMetricsConfig() {} + /** + * @return How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + * + */ + public String dataSourceLevelMetricsBehavior() { + return this.dataSourceLevelMetricsBehavior; + } + /** + * @return How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + * + */ + public String operationLevelMetricsConfig() { + return this.operationLevelMetricsConfig; + } + /** + * @return How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + * + */ + public String resolverLevelMetricsBehavior() { + return this.resolverLevelMetricsBehavior; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GraphQLApiEnhancedMetricsConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String dataSourceLevelMetricsBehavior; + private String operationLevelMetricsConfig; + private String resolverLevelMetricsBehavior; + public Builder() {} + public Builder(GraphQLApiEnhancedMetricsConfig defaults) { + Objects.requireNonNull(defaults); + this.dataSourceLevelMetricsBehavior = defaults.dataSourceLevelMetricsBehavior; + this.operationLevelMetricsConfig = defaults.operationLevelMetricsConfig; + this.resolverLevelMetricsBehavior = defaults.resolverLevelMetricsBehavior; + } + + @CustomType.Setter + public Builder dataSourceLevelMetricsBehavior(String dataSourceLevelMetricsBehavior) { + if (dataSourceLevelMetricsBehavior == null) { + throw new MissingRequiredPropertyException("GraphQLApiEnhancedMetricsConfig", "dataSourceLevelMetricsBehavior"); + } + this.dataSourceLevelMetricsBehavior = dataSourceLevelMetricsBehavior; + return this; + } + @CustomType.Setter + public Builder operationLevelMetricsConfig(String operationLevelMetricsConfig) { + if (operationLevelMetricsConfig == null) { + throw new MissingRequiredPropertyException("GraphQLApiEnhancedMetricsConfig", "operationLevelMetricsConfig"); + } + this.operationLevelMetricsConfig = operationLevelMetricsConfig; + return this; + } + @CustomType.Setter + public Builder resolverLevelMetricsBehavior(String resolverLevelMetricsBehavior) { + if (resolverLevelMetricsBehavior == null) { + throw new MissingRequiredPropertyException("GraphQLApiEnhancedMetricsConfig", "resolverLevelMetricsBehavior"); + } + this.resolverLevelMetricsBehavior = resolverLevelMetricsBehavior; + return this; + } + public GraphQLApiEnhancedMetricsConfig build() { + final var _resultValue = new GraphQLApiEnhancedMetricsConfig(); + _resultValue.dataSourceLevelMetricsBehavior = dataSourceLevelMetricsBehavior; + _resultValue.operationLevelMetricsConfig = operationLevelMetricsConfig; + _resultValue.resolverLevelMetricsBehavior = resolverLevelMetricsBehavior; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/chatbot/SlackChannelConfiguration.java b/sdk/java/src/main/java/com/pulumi/aws/chatbot/SlackChannelConfiguration.java new file mode 100644 index 00000000000..dc55a1c191f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/chatbot/SlackChannelConfiguration.java @@ -0,0 +1,321 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.chatbot; + +import com.pulumi.aws.Utilities; +import com.pulumi.aws.chatbot.SlackChannelConfigurationArgs; +import com.pulumi.aws.chatbot.inputs.SlackChannelConfigurationState; +import com.pulumi.aws.chatbot.outputs.SlackChannelConfigurationTimeouts; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * Resource for managing an AWS Chatbot Slack Channel Configuration. + * + * ## Example Usage + * + * ### Basic Usage + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.chatbot.SlackChannelConfiguration;
+ * import com.pulumi.aws.chatbot.SlackChannelConfigurationArgs;
+ * 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 test = new SlackChannelConfiguration("test", SlackChannelConfigurationArgs.builder()
+ *             .configurationName("min-slaka-kanal")
+ *             .iamRoleArn(testAwsIamRole.arn())
+ *             .slackChannelId("C07EZ1ABC23")
+ *             .slackTeamId("T07EA123LEP")
+ *             .tags(Map.of("Name", "min-slaka-kanal"))
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * Using `pulumi import`, import Chatbot Slack Channel Configuration using the `chat_configuration_arn`. For example: + * + * ```sh + * $ pulumi import aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration example arn:aws:chatbot::012345678901:chat-configuration/slack-channel/min-slaka-kanal + * ``` + * + */ +@ResourceType(type="aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration") +public class SlackChannelConfiguration extends com.pulumi.resources.CustomResource { + /** + * ARN of the Slack channel configuration. + * + */ + @Export(name="chatConfigurationArn", refs={String.class}, tree="[0]") + private Output chatConfigurationArn; + + /** + * @return ARN of the Slack channel configuration. + * + */ + public Output chatConfigurationArn() { + return this.chatConfigurationArn; + } + /** + * Name of the Slack channel configuration. + * + */ + @Export(name="configurationName", refs={String.class}, tree="[0]") + private Output configurationName; + + /** + * @return Name of the Slack channel configuration. + * + */ + public Output configurationName() { + return this.configurationName; + } + /** + * List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + */ + @Export(name="guardrailPolicyArns", refs={List.class,String.class}, tree="[0,1]") + private Output> guardrailPolicyArns; + + /** + * @return List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + */ + public Output> guardrailPolicyArns() { + return this.guardrailPolicyArns; + } + /** + * User-defined role that AWS Chatbot assumes. This is not the service-linked role. + * + */ + @Export(name="iamRoleArn", refs={String.class}, tree="[0]") + private Output iamRoleArn; + + /** + * @return User-defined role that AWS Chatbot assumes. This is not the service-linked role. + * + */ + public Output iamRoleArn() { + return this.iamRoleArn; + } + /** + * Logging levels include `ERROR`, `INFO`, or `NONE`. + * + */ + @Export(name="loggingLevel", refs={String.class}, tree="[0]") + private Output loggingLevel; + + /** + * @return Logging levels include `ERROR`, `INFO`, or `NONE`. + * + */ + public Output loggingLevel() { + return this.loggingLevel; + } + /** + * ID of the Slack channel. For example, `C07EZ1ABC23`. + * + */ + @Export(name="slackChannelId", refs={String.class}, tree="[0]") + private Output slackChannelId; + + /** + * @return ID of the Slack channel. For example, `C07EZ1ABC23`. + * + */ + public Output slackChannelId() { + return this.slackChannelId; + } + /** + * Name of the Slack channel. + * + */ + @Export(name="slackChannelName", refs={String.class}, tree="[0]") + private Output slackChannelName; + + /** + * @return Name of the Slack channel. + * + */ + public Output slackChannelName() { + return this.slackChannelName; + } + /** + * ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + * + * The following arguments are optional: + * + */ + @Export(name="slackTeamId", refs={String.class}, tree="[0]") + private Output slackTeamId; + + /** + * @return ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + * + * The following arguments are optional: + * + */ + public Output slackTeamId() { + return this.slackTeamId; + } + /** + * Name of the Slack team. + * + */ + @Export(name="slackTeamName", refs={String.class}, tree="[0]") + private Output slackTeamName; + + /** + * @return Name of the Slack team. + * + */ + public Output slackTeamName() { + return this.slackTeamName; + } + /** + * ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + */ + @Export(name="snsTopicArns", refs={List.class,String.class}, tree="[0,1]") + private Output> snsTopicArns; + + /** + * @return ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + */ + public Output> snsTopicArns() { + return this.snsTopicArns; + } + /** + * Map of tags assigned to the resource. + * + */ + @Export(name="tags", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> tags; + + /** + * @return Map of tags assigned to the resource. + * + */ + public Output>> tags() { + return Codegen.optional(this.tags); + } + /** + * Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + @Export(name="tagsAll", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> tagsAll; + + /** + * @return Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + */ + public Output> tagsAll() { + return this.tagsAll; + } + @Export(name="timeouts", refs={SlackChannelConfigurationTimeouts.class}, tree="[0]") + private Output timeouts; + + public Output> timeouts() { + return Codegen.optional(this.timeouts); + } + /** + * Enables use of a user role requirement in your chat configuration. + * + */ + @Export(name="userAuthorizationRequired", refs={Boolean.class}, tree="[0]") + private Output userAuthorizationRequired; + + /** + * @return Enables use of a user role requirement in your chat configuration. + * + */ + public Output userAuthorizationRequired() { + return this.userAuthorizationRequired; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public SlackChannelConfiguration(String name) { + this(name, SlackChannelConfigurationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public SlackChannelConfiguration(String name, SlackChannelConfigurationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public SlackChannelConfiguration(String name, SlackChannelConfigurationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration", name, args == null ? SlackChannelConfigurationArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private SlackChannelConfiguration(String name, Output id, @Nullable SlackChannelConfigurationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static SlackChannelConfiguration get(String name, Output id, @Nullable SlackChannelConfigurationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new SlackChannelConfiguration(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/chatbot/SlackChannelConfigurationArgs.java b/sdk/java/src/main/java/com/pulumi/aws/chatbot/SlackChannelConfigurationArgs.java new file mode 100644 index 00000000000..95a30a2df3a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/chatbot/SlackChannelConfigurationArgs.java @@ -0,0 +1,441 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.chatbot; + +import com.pulumi.aws.chatbot.inputs.SlackChannelConfigurationTimeoutsArgs; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SlackChannelConfigurationArgs extends com.pulumi.resources.ResourceArgs { + + public static final SlackChannelConfigurationArgs Empty = new SlackChannelConfigurationArgs(); + + /** + * Name of the Slack channel configuration. + * + */ + @Import(name="configurationName", required=true) + private Output configurationName; + + /** + * @return Name of the Slack channel configuration. + * + */ + public Output configurationName() { + return this.configurationName; + } + + /** + * List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + */ + @Import(name="guardrailPolicyArns") + private @Nullable Output> guardrailPolicyArns; + + /** + * @return List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + */ + public Optional>> guardrailPolicyArns() { + return Optional.ofNullable(this.guardrailPolicyArns); + } + + /** + * User-defined role that AWS Chatbot assumes. This is not the service-linked role. + * + */ + @Import(name="iamRoleArn", required=true) + private Output iamRoleArn; + + /** + * @return User-defined role that AWS Chatbot assumes. This is not the service-linked role. + * + */ + public Output iamRoleArn() { + return this.iamRoleArn; + } + + /** + * Logging levels include `ERROR`, `INFO`, or `NONE`. + * + */ + @Import(name="loggingLevel") + private @Nullable Output loggingLevel; + + /** + * @return Logging levels include `ERROR`, `INFO`, or `NONE`. + * + */ + public Optional> loggingLevel() { + return Optional.ofNullable(this.loggingLevel); + } + + /** + * ID of the Slack channel. For example, `C07EZ1ABC23`. + * + */ + @Import(name="slackChannelId", required=true) + private Output slackChannelId; + + /** + * @return ID of the Slack channel. For example, `C07EZ1ABC23`. + * + */ + public Output slackChannelId() { + return this.slackChannelId; + } + + /** + * ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + * + * The following arguments are optional: + * + */ + @Import(name="slackTeamId", required=true) + private Output slackTeamId; + + /** + * @return ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + * + * The following arguments are optional: + * + */ + public Output slackTeamId() { + return this.slackTeamId; + } + + /** + * ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + */ + @Import(name="snsTopicArns") + private @Nullable Output> snsTopicArns; + + /** + * @return ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + */ + public Optional>> snsTopicArns() { + return Optional.ofNullable(this.snsTopicArns); + } + + /** + * Map of tags assigned to the resource. + * + */ + @Import(name="tags") + private @Nullable Output> tags; + + /** + * @return Map of tags assigned to the resource. + * + */ + public Optional>> tags() { + return Optional.ofNullable(this.tags); + } + + @Import(name="timeouts") + private @Nullable Output timeouts; + + public Optional> timeouts() { + return Optional.ofNullable(this.timeouts); + } + + /** + * Enables use of a user role requirement in your chat configuration. + * + */ + @Import(name="userAuthorizationRequired") + private @Nullable Output userAuthorizationRequired; + + /** + * @return Enables use of a user role requirement in your chat configuration. + * + */ + public Optional> userAuthorizationRequired() { + return Optional.ofNullable(this.userAuthorizationRequired); + } + + private SlackChannelConfigurationArgs() {} + + private SlackChannelConfigurationArgs(SlackChannelConfigurationArgs $) { + this.configurationName = $.configurationName; + this.guardrailPolicyArns = $.guardrailPolicyArns; + this.iamRoleArn = $.iamRoleArn; + this.loggingLevel = $.loggingLevel; + this.slackChannelId = $.slackChannelId; + this.slackTeamId = $.slackTeamId; + this.snsTopicArns = $.snsTopicArns; + this.tags = $.tags; + this.timeouts = $.timeouts; + this.userAuthorizationRequired = $.userAuthorizationRequired; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SlackChannelConfigurationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SlackChannelConfigurationArgs $; + + public Builder() { + $ = new SlackChannelConfigurationArgs(); + } + + public Builder(SlackChannelConfigurationArgs defaults) { + $ = new SlackChannelConfigurationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param configurationName Name of the Slack channel configuration. + * + * @return builder + * + */ + public Builder configurationName(Output configurationName) { + $.configurationName = configurationName; + return this; + } + + /** + * @param configurationName Name of the Slack channel configuration. + * + * @return builder + * + */ + public Builder configurationName(String configurationName) { + return configurationName(Output.of(configurationName)); + } + + /** + * @param guardrailPolicyArns List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + * @return builder + * + */ + public Builder guardrailPolicyArns(@Nullable Output> guardrailPolicyArns) { + $.guardrailPolicyArns = guardrailPolicyArns; + return this; + } + + /** + * @param guardrailPolicyArns List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + * @return builder + * + */ + public Builder guardrailPolicyArns(List guardrailPolicyArns) { + return guardrailPolicyArns(Output.of(guardrailPolicyArns)); + } + + /** + * @param guardrailPolicyArns List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + * @return builder + * + */ + public Builder guardrailPolicyArns(String... guardrailPolicyArns) { + return guardrailPolicyArns(List.of(guardrailPolicyArns)); + } + + /** + * @param iamRoleArn User-defined role that AWS Chatbot assumes. This is not the service-linked role. + * + * @return builder + * + */ + public Builder iamRoleArn(Output iamRoleArn) { + $.iamRoleArn = iamRoleArn; + return this; + } + + /** + * @param iamRoleArn User-defined role that AWS Chatbot assumes. This is not the service-linked role. + * + * @return builder + * + */ + public Builder iamRoleArn(String iamRoleArn) { + return iamRoleArn(Output.of(iamRoleArn)); + } + + /** + * @param loggingLevel Logging levels include `ERROR`, `INFO`, or `NONE`. + * + * @return builder + * + */ + public Builder loggingLevel(@Nullable Output loggingLevel) { + $.loggingLevel = loggingLevel; + return this; + } + + /** + * @param loggingLevel Logging levels include `ERROR`, `INFO`, or `NONE`. + * + * @return builder + * + */ + public Builder loggingLevel(String loggingLevel) { + return loggingLevel(Output.of(loggingLevel)); + } + + /** + * @param slackChannelId ID of the Slack channel. For example, `C07EZ1ABC23`. + * + * @return builder + * + */ + public Builder slackChannelId(Output slackChannelId) { + $.slackChannelId = slackChannelId; + return this; + } + + /** + * @param slackChannelId ID of the Slack channel. For example, `C07EZ1ABC23`. + * + * @return builder + * + */ + public Builder slackChannelId(String slackChannelId) { + return slackChannelId(Output.of(slackChannelId)); + } + + /** + * @param slackTeamId ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder slackTeamId(Output slackTeamId) { + $.slackTeamId = slackTeamId; + return this; + } + + /** + * @param slackTeamId ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder slackTeamId(String slackTeamId) { + return slackTeamId(Output.of(slackTeamId)); + } + + /** + * @param snsTopicArns ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + * @return builder + * + */ + public Builder snsTopicArns(@Nullable Output> snsTopicArns) { + $.snsTopicArns = snsTopicArns; + return this; + } + + /** + * @param snsTopicArns ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + * @return builder + * + */ + public Builder snsTopicArns(List snsTopicArns) { + return snsTopicArns(Output.of(snsTopicArns)); + } + + /** + * @param snsTopicArns ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + * @return builder + * + */ + public Builder snsTopicArns(String... snsTopicArns) { + return snsTopicArns(List.of(snsTopicArns)); + } + + /** + * @param tags Map of tags assigned to the resource. + * + * @return builder + * + */ + public Builder tags(@Nullable Output> tags) { + $.tags = tags; + return this; + } + + /** + * @param tags Map of tags assigned to the resource. + * + * @return builder + * + */ + public Builder tags(Map tags) { + return tags(Output.of(tags)); + } + + public Builder timeouts(@Nullable Output timeouts) { + $.timeouts = timeouts; + return this; + } + + public Builder timeouts(SlackChannelConfigurationTimeoutsArgs timeouts) { + return timeouts(Output.of(timeouts)); + } + + /** + * @param userAuthorizationRequired Enables use of a user role requirement in your chat configuration. + * + * @return builder + * + */ + public Builder userAuthorizationRequired(@Nullable Output userAuthorizationRequired) { + $.userAuthorizationRequired = userAuthorizationRequired; + return this; + } + + /** + * @param userAuthorizationRequired Enables use of a user role requirement in your chat configuration. + * + * @return builder + * + */ + public Builder userAuthorizationRequired(Boolean userAuthorizationRequired) { + return userAuthorizationRequired(Output.of(userAuthorizationRequired)); + } + + public SlackChannelConfigurationArgs build() { + if ($.configurationName == null) { + throw new MissingRequiredPropertyException("SlackChannelConfigurationArgs", "configurationName"); + } + if ($.iamRoleArn == null) { + throw new MissingRequiredPropertyException("SlackChannelConfigurationArgs", "iamRoleArn"); + } + if ($.slackChannelId == null) { + throw new MissingRequiredPropertyException("SlackChannelConfigurationArgs", "slackChannelId"); + } + if ($.slackTeamId == null) { + throw new MissingRequiredPropertyException("SlackChannelConfigurationArgs", "slackTeamId"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/chatbot/TeamsChannelConfiguration.java b/sdk/java/src/main/java/com/pulumi/aws/chatbot/TeamsChannelConfiguration.java new file mode 100644 index 00000000000..999b251cf51 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/chatbot/TeamsChannelConfiguration.java @@ -0,0 +1,338 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.chatbot; + +import com.pulumi.aws.Utilities; +import com.pulumi.aws.chatbot.TeamsChannelConfigurationArgs; +import com.pulumi.aws.chatbot.inputs.TeamsChannelConfigurationState; +import com.pulumi.aws.chatbot.outputs.TeamsChannelConfigurationTimeouts; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * Resource for managing an AWS Chatbot Microsoft Teams Channel Configuration. + * + * > **NOTE:** We provide this resource on a best-effort basis. If you are able to test it and find it useful, we welcome your input at GitHub. + * + * ## Example Usage + * + * ### Basic Usage + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.chatbot.TeamsChannelConfiguration;
+ * import com.pulumi.aws.chatbot.TeamsChannelConfigurationArgs;
+ * 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 test = new TeamsChannelConfiguration("test", TeamsChannelConfigurationArgs.builder()
+ *             .channelId("C07EZ1ABC23")
+ *             .configurationName("mitt-lags-kanal")
+ *             .iamRoleArn(testAwsIamRole.arn())
+ *             .teamId("74361522-da01-538d-aa2e-ac7918c6bb92")
+ *             .tenantId("1234")
+ *             .tags(Map.of("Name", "mitt-lags-kanal"))
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * Using `pulumi import`, import Chatbot Microsoft Teams Channel Configuration using the `team_id`. For example: + * + * ```sh + * $ pulumi import aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration example 5f4f15d2-b958-522a-8333-124aa8bf0925 + * ``` + * + */ +@ResourceType(type="aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration") +public class TeamsChannelConfiguration extends com.pulumi.resources.CustomResource { + /** + * ID of the Microsoft Teams channel. + * + */ + @Export(name="channelId", refs={String.class}, tree="[0]") + private Output channelId; + + /** + * @return ID of the Microsoft Teams channel. + * + */ + public Output channelId() { + return this.channelId; + } + /** + * Name of the Microsoft Teams channel. + * + */ + @Export(name="channelName", refs={String.class}, tree="[0]") + private Output channelName; + + /** + * @return Name of the Microsoft Teams channel. + * + */ + public Output channelName() { + return this.channelName; + } + /** + * ARN of the Microsoft Teams channel configuration. + * + */ + @Export(name="chatConfigurationArn", refs={String.class}, tree="[0]") + private Output chatConfigurationArn; + + /** + * @return ARN of the Microsoft Teams channel configuration. + * + */ + public Output chatConfigurationArn() { + return this.chatConfigurationArn; + } + /** + * Name of the Microsoft Teams channel configuration. + * + */ + @Export(name="configurationName", refs={String.class}, tree="[0]") + private Output configurationName; + + /** + * @return Name of the Microsoft Teams channel configuration. + * + */ + public Output configurationName() { + return this.configurationName; + } + /** + * List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + */ + @Export(name="guardrailPolicyArns", refs={List.class,String.class}, tree="[0,1]") + private Output> guardrailPolicyArns; + + /** + * @return List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + */ + public Output> guardrailPolicyArns() { + return this.guardrailPolicyArns; + } + /** + * ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + * + */ + @Export(name="iamRoleArn", refs={String.class}, tree="[0]") + private Output iamRoleArn; + + /** + * @return ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + * + */ + public Output iamRoleArn() { + return this.iamRoleArn; + } + /** + * Logging levels include `ERROR`, `INFO`, or `NONE`. + * + */ + @Export(name="loggingLevel", refs={String.class}, tree="[0]") + private Output loggingLevel; + + /** + * @return Logging levels include `ERROR`, `INFO`, or `NONE`. + * + */ + public Output loggingLevel() { + return this.loggingLevel; + } + /** + * ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + */ + @Export(name="snsTopicArns", refs={List.class,String.class}, tree="[0,1]") + private Output> snsTopicArns; + + /** + * @return ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + */ + public Output> snsTopicArns() { + return this.snsTopicArns; + } + /** + * Map of tags assigned to the resource. + * + */ + @Export(name="tags", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> tags; + + /** + * @return Map of tags assigned to the resource. + * + */ + public Output>> tags() { + return Codegen.optional(this.tags); + } + /** + * Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + @Export(name="tagsAll", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> tagsAll; + + /** + * @return Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + */ + public Output> tagsAll() { + return this.tagsAll; + } + /** + * ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + * + */ + @Export(name="teamId", refs={String.class}, tree="[0]") + private Output teamId; + + /** + * @return ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + * + */ + public Output teamId() { + return this.teamId; + } + /** + * Name of the Microsoft Teams team. + * + */ + @Export(name="teamName", refs={String.class}, tree="[0]") + private Output teamName; + + /** + * @return Name of the Microsoft Teams team. + * + */ + public Output teamName() { + return this.teamName; + } + /** + * ID of the Microsoft Teams tenant. + * + * The following arguments are optional: + * + */ + @Export(name="tenantId", refs={String.class}, tree="[0]") + private Output tenantId; + + /** + * @return ID of the Microsoft Teams tenant. + * + * The following arguments are optional: + * + */ + public Output tenantId() { + return this.tenantId; + } + @Export(name="timeouts", refs={TeamsChannelConfigurationTimeouts.class}, tree="[0]") + private Output timeouts; + + public Output> timeouts() { + return Codegen.optional(this.timeouts); + } + /** + * Enables use of a user role requirement in your chat configuration. + * + */ + @Export(name="userAuthorizationRequired", refs={Boolean.class}, tree="[0]") + private Output userAuthorizationRequired; + + /** + * @return Enables use of a user role requirement in your chat configuration. + * + */ + public Output userAuthorizationRequired() { + return this.userAuthorizationRequired; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public TeamsChannelConfiguration(String name) { + this(name, TeamsChannelConfigurationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public TeamsChannelConfiguration(String name, TeamsChannelConfigurationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public TeamsChannelConfiguration(String name, TeamsChannelConfigurationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration", name, args == null ? TeamsChannelConfigurationArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private TeamsChannelConfiguration(String name, Output id, @Nullable TeamsChannelConfigurationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static TeamsChannelConfiguration get(String name, Output id, @Nullable TeamsChannelConfigurationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new TeamsChannelConfiguration(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/chatbot/TeamsChannelConfigurationArgs.java b/sdk/java/src/main/java/com/pulumi/aws/chatbot/TeamsChannelConfigurationArgs.java new file mode 100644 index 00000000000..198fe3bf939 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/chatbot/TeamsChannelConfigurationArgs.java @@ -0,0 +1,555 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.chatbot; + +import com.pulumi.aws.chatbot.inputs.TeamsChannelConfigurationTimeoutsArgs; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class TeamsChannelConfigurationArgs extends com.pulumi.resources.ResourceArgs { + + public static final TeamsChannelConfigurationArgs Empty = new TeamsChannelConfigurationArgs(); + + /** + * ID of the Microsoft Teams channel. + * + */ + @Import(name="channelId", required=true) + private Output channelId; + + /** + * @return ID of the Microsoft Teams channel. + * + */ + public Output channelId() { + return this.channelId; + } + + /** + * Name of the Microsoft Teams channel. + * + */ + @Import(name="channelName") + private @Nullable Output channelName; + + /** + * @return Name of the Microsoft Teams channel. + * + */ + public Optional> channelName() { + return Optional.ofNullable(this.channelName); + } + + /** + * Name of the Microsoft Teams channel configuration. + * + */ + @Import(name="configurationName", required=true) + private Output configurationName; + + /** + * @return Name of the Microsoft Teams channel configuration. + * + */ + public Output configurationName() { + return this.configurationName; + } + + /** + * List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + */ + @Import(name="guardrailPolicyArns") + private @Nullable Output> guardrailPolicyArns; + + /** + * @return List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + */ + public Optional>> guardrailPolicyArns() { + return Optional.ofNullable(this.guardrailPolicyArns); + } + + /** + * ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + * + */ + @Import(name="iamRoleArn", required=true) + private Output iamRoleArn; + + /** + * @return ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + * + */ + public Output iamRoleArn() { + return this.iamRoleArn; + } + + /** + * Logging levels include `ERROR`, `INFO`, or `NONE`. + * + */ + @Import(name="loggingLevel") + private @Nullable Output loggingLevel; + + /** + * @return Logging levels include `ERROR`, `INFO`, or `NONE`. + * + */ + public Optional> loggingLevel() { + return Optional.ofNullable(this.loggingLevel); + } + + /** + * ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + */ + @Import(name="snsTopicArns") + private @Nullable Output> snsTopicArns; + + /** + * @return ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + */ + public Optional>> snsTopicArns() { + return Optional.ofNullable(this.snsTopicArns); + } + + /** + * Map of tags assigned to the resource. + * + */ + @Import(name="tags") + private @Nullable Output> tags; + + /** + * @return Map of tags assigned to the resource. + * + */ + public Optional>> tags() { + return Optional.ofNullable(this.tags); + } + + /** + * ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + * + */ + @Import(name="teamId", required=true) + private Output teamId; + + /** + * @return ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + * + */ + public Output teamId() { + return this.teamId; + } + + /** + * Name of the Microsoft Teams team. + * + */ + @Import(name="teamName") + private @Nullable Output teamName; + + /** + * @return Name of the Microsoft Teams team. + * + */ + public Optional> teamName() { + return Optional.ofNullable(this.teamName); + } + + /** + * ID of the Microsoft Teams tenant. + * + * The following arguments are optional: + * + */ + @Import(name="tenantId", required=true) + private Output tenantId; + + /** + * @return ID of the Microsoft Teams tenant. + * + * The following arguments are optional: + * + */ + public Output tenantId() { + return this.tenantId; + } + + @Import(name="timeouts") + private @Nullable Output timeouts; + + public Optional> timeouts() { + return Optional.ofNullable(this.timeouts); + } + + /** + * Enables use of a user role requirement in your chat configuration. + * + */ + @Import(name="userAuthorizationRequired") + private @Nullable Output userAuthorizationRequired; + + /** + * @return Enables use of a user role requirement in your chat configuration. + * + */ + public Optional> userAuthorizationRequired() { + return Optional.ofNullable(this.userAuthorizationRequired); + } + + private TeamsChannelConfigurationArgs() {} + + private TeamsChannelConfigurationArgs(TeamsChannelConfigurationArgs $) { + this.channelId = $.channelId; + this.channelName = $.channelName; + this.configurationName = $.configurationName; + this.guardrailPolicyArns = $.guardrailPolicyArns; + this.iamRoleArn = $.iamRoleArn; + this.loggingLevel = $.loggingLevel; + this.snsTopicArns = $.snsTopicArns; + this.tags = $.tags; + this.teamId = $.teamId; + this.teamName = $.teamName; + this.tenantId = $.tenantId; + this.timeouts = $.timeouts; + this.userAuthorizationRequired = $.userAuthorizationRequired; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(TeamsChannelConfigurationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private TeamsChannelConfigurationArgs $; + + public Builder() { + $ = new TeamsChannelConfigurationArgs(); + } + + public Builder(TeamsChannelConfigurationArgs defaults) { + $ = new TeamsChannelConfigurationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param channelId ID of the Microsoft Teams channel. + * + * @return builder + * + */ + public Builder channelId(Output channelId) { + $.channelId = channelId; + return this; + } + + /** + * @param channelId ID of the Microsoft Teams channel. + * + * @return builder + * + */ + public Builder channelId(String channelId) { + return channelId(Output.of(channelId)); + } + + /** + * @param channelName Name of the Microsoft Teams channel. + * + * @return builder + * + */ + public Builder channelName(@Nullable Output channelName) { + $.channelName = channelName; + return this; + } + + /** + * @param channelName Name of the Microsoft Teams channel. + * + * @return builder + * + */ + public Builder channelName(String channelName) { + return channelName(Output.of(channelName)); + } + + /** + * @param configurationName Name of the Microsoft Teams channel configuration. + * + * @return builder + * + */ + public Builder configurationName(Output configurationName) { + $.configurationName = configurationName; + return this; + } + + /** + * @param configurationName Name of the Microsoft Teams channel configuration. + * + * @return builder + * + */ + public Builder configurationName(String configurationName) { + return configurationName(Output.of(configurationName)); + } + + /** + * @param guardrailPolicyArns List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + * @return builder + * + */ + public Builder guardrailPolicyArns(@Nullable Output> guardrailPolicyArns) { + $.guardrailPolicyArns = guardrailPolicyArns; + return this; + } + + /** + * @param guardrailPolicyArns List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + * @return builder + * + */ + public Builder guardrailPolicyArns(List guardrailPolicyArns) { + return guardrailPolicyArns(Output.of(guardrailPolicyArns)); + } + + /** + * @param guardrailPolicyArns List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + * @return builder + * + */ + public Builder guardrailPolicyArns(String... guardrailPolicyArns) { + return guardrailPolicyArns(List.of(guardrailPolicyArns)); + } + + /** + * @param iamRoleArn ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + * + * @return builder + * + */ + public Builder iamRoleArn(Output iamRoleArn) { + $.iamRoleArn = iamRoleArn; + return this; + } + + /** + * @param iamRoleArn ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + * + * @return builder + * + */ + public Builder iamRoleArn(String iamRoleArn) { + return iamRoleArn(Output.of(iamRoleArn)); + } + + /** + * @param loggingLevel Logging levels include `ERROR`, `INFO`, or `NONE`. + * + * @return builder + * + */ + public Builder loggingLevel(@Nullable Output loggingLevel) { + $.loggingLevel = loggingLevel; + return this; + } + + /** + * @param loggingLevel Logging levels include `ERROR`, `INFO`, or `NONE`. + * + * @return builder + * + */ + public Builder loggingLevel(String loggingLevel) { + return loggingLevel(Output.of(loggingLevel)); + } + + /** + * @param snsTopicArns ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + * @return builder + * + */ + public Builder snsTopicArns(@Nullable Output> snsTopicArns) { + $.snsTopicArns = snsTopicArns; + return this; + } + + /** + * @param snsTopicArns ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + * @return builder + * + */ + public Builder snsTopicArns(List snsTopicArns) { + return snsTopicArns(Output.of(snsTopicArns)); + } + + /** + * @param snsTopicArns ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + * @return builder + * + */ + public Builder snsTopicArns(String... snsTopicArns) { + return snsTopicArns(List.of(snsTopicArns)); + } + + /** + * @param tags Map of tags assigned to the resource. + * + * @return builder + * + */ + public Builder tags(@Nullable Output> tags) { + $.tags = tags; + return this; + } + + /** + * @param tags Map of tags assigned to the resource. + * + * @return builder + * + */ + public Builder tags(Map tags) { + return tags(Output.of(tags)); + } + + /** + * @param teamId ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + * + * @return builder + * + */ + public Builder teamId(Output teamId) { + $.teamId = teamId; + return this; + } + + /** + * @param teamId ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + * + * @return builder + * + */ + public Builder teamId(String teamId) { + return teamId(Output.of(teamId)); + } + + /** + * @param teamName Name of the Microsoft Teams team. + * + * @return builder + * + */ + public Builder teamName(@Nullable Output teamName) { + $.teamName = teamName; + return this; + } + + /** + * @param teamName Name of the Microsoft Teams team. + * + * @return builder + * + */ + public Builder teamName(String teamName) { + return teamName(Output.of(teamName)); + } + + /** + * @param tenantId ID of the Microsoft Teams tenant. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder tenantId(Output tenantId) { + $.tenantId = tenantId; + return this; + } + + /** + * @param tenantId ID of the Microsoft Teams tenant. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder tenantId(String tenantId) { + return tenantId(Output.of(tenantId)); + } + + public Builder timeouts(@Nullable Output timeouts) { + $.timeouts = timeouts; + return this; + } + + public Builder timeouts(TeamsChannelConfigurationTimeoutsArgs timeouts) { + return timeouts(Output.of(timeouts)); + } + + /** + * @param userAuthorizationRequired Enables use of a user role requirement in your chat configuration. + * + * @return builder + * + */ + public Builder userAuthorizationRequired(@Nullable Output userAuthorizationRequired) { + $.userAuthorizationRequired = userAuthorizationRequired; + return this; + } + + /** + * @param userAuthorizationRequired Enables use of a user role requirement in your chat configuration. + * + * @return builder + * + */ + public Builder userAuthorizationRequired(Boolean userAuthorizationRequired) { + return userAuthorizationRequired(Output.of(userAuthorizationRequired)); + } + + public TeamsChannelConfigurationArgs build() { + if ($.channelId == null) { + throw new MissingRequiredPropertyException("TeamsChannelConfigurationArgs", "channelId"); + } + if ($.configurationName == null) { + throw new MissingRequiredPropertyException("TeamsChannelConfigurationArgs", "configurationName"); + } + if ($.iamRoleArn == null) { + throw new MissingRequiredPropertyException("TeamsChannelConfigurationArgs", "iamRoleArn"); + } + if ($.teamId == null) { + throw new MissingRequiredPropertyException("TeamsChannelConfigurationArgs", "teamId"); + } + if ($.tenantId == null) { + throw new MissingRequiredPropertyException("TeamsChannelConfigurationArgs", "tenantId"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/SlackChannelConfigurationState.java b/sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/SlackChannelConfigurationState.java new file mode 100644 index 00000000000..43b6938157d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/SlackChannelConfigurationState.java @@ -0,0 +1,592 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.chatbot.inputs; + +import com.pulumi.aws.chatbot.inputs.SlackChannelConfigurationTimeoutsArgs; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SlackChannelConfigurationState extends com.pulumi.resources.ResourceArgs { + + public static final SlackChannelConfigurationState Empty = new SlackChannelConfigurationState(); + + /** + * ARN of the Slack channel configuration. + * + */ + @Import(name="chatConfigurationArn") + private @Nullable Output chatConfigurationArn; + + /** + * @return ARN of the Slack channel configuration. + * + */ + public Optional> chatConfigurationArn() { + return Optional.ofNullable(this.chatConfigurationArn); + } + + /** + * Name of the Slack channel configuration. + * + */ + @Import(name="configurationName") + private @Nullable Output configurationName; + + /** + * @return Name of the Slack channel configuration. + * + */ + public Optional> configurationName() { + return Optional.ofNullable(this.configurationName); + } + + /** + * List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + */ + @Import(name="guardrailPolicyArns") + private @Nullable Output> guardrailPolicyArns; + + /** + * @return List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + */ + public Optional>> guardrailPolicyArns() { + return Optional.ofNullable(this.guardrailPolicyArns); + } + + /** + * User-defined role that AWS Chatbot assumes. This is not the service-linked role. + * + */ + @Import(name="iamRoleArn") + private @Nullable Output iamRoleArn; + + /** + * @return User-defined role that AWS Chatbot assumes. This is not the service-linked role. + * + */ + public Optional> iamRoleArn() { + return Optional.ofNullable(this.iamRoleArn); + } + + /** + * Logging levels include `ERROR`, `INFO`, or `NONE`. + * + */ + @Import(name="loggingLevel") + private @Nullable Output loggingLevel; + + /** + * @return Logging levels include `ERROR`, `INFO`, or `NONE`. + * + */ + public Optional> loggingLevel() { + return Optional.ofNullable(this.loggingLevel); + } + + /** + * ID of the Slack channel. For example, `C07EZ1ABC23`. + * + */ + @Import(name="slackChannelId") + private @Nullable Output slackChannelId; + + /** + * @return ID of the Slack channel. For example, `C07EZ1ABC23`. + * + */ + public Optional> slackChannelId() { + return Optional.ofNullable(this.slackChannelId); + } + + /** + * Name of the Slack channel. + * + */ + @Import(name="slackChannelName") + private @Nullable Output slackChannelName; + + /** + * @return Name of the Slack channel. + * + */ + public Optional> slackChannelName() { + return Optional.ofNullable(this.slackChannelName); + } + + /** + * ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + * + * The following arguments are optional: + * + */ + @Import(name="slackTeamId") + private @Nullable Output slackTeamId; + + /** + * @return ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + * + * The following arguments are optional: + * + */ + public Optional> slackTeamId() { + return Optional.ofNullable(this.slackTeamId); + } + + /** + * Name of the Slack team. + * + */ + @Import(name="slackTeamName") + private @Nullable Output slackTeamName; + + /** + * @return Name of the Slack team. + * + */ + public Optional> slackTeamName() { + return Optional.ofNullable(this.slackTeamName); + } + + /** + * ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + */ + @Import(name="snsTopicArns") + private @Nullable Output> snsTopicArns; + + /** + * @return ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + */ + public Optional>> snsTopicArns() { + return Optional.ofNullable(this.snsTopicArns); + } + + /** + * Map of tags assigned to the resource. + * + */ + @Import(name="tags") + private @Nullable Output> tags; + + /** + * @return Map of tags assigned to the resource. + * + */ + public Optional>> tags() { + return Optional.ofNullable(this.tags); + } + + /** + * Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + @Import(name="tagsAll") + private @Nullable Output> tagsAll; + + /** + * @return Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + public Optional>> tagsAll() { + return Optional.ofNullable(this.tagsAll); + } + + @Import(name="timeouts") + private @Nullable Output timeouts; + + public Optional> timeouts() { + return Optional.ofNullable(this.timeouts); + } + + /** + * Enables use of a user role requirement in your chat configuration. + * + */ + @Import(name="userAuthorizationRequired") + private @Nullable Output userAuthorizationRequired; + + /** + * @return Enables use of a user role requirement in your chat configuration. + * + */ + public Optional> userAuthorizationRequired() { + return Optional.ofNullable(this.userAuthorizationRequired); + } + + private SlackChannelConfigurationState() {} + + private SlackChannelConfigurationState(SlackChannelConfigurationState $) { + this.chatConfigurationArn = $.chatConfigurationArn; + this.configurationName = $.configurationName; + this.guardrailPolicyArns = $.guardrailPolicyArns; + this.iamRoleArn = $.iamRoleArn; + this.loggingLevel = $.loggingLevel; + this.slackChannelId = $.slackChannelId; + this.slackChannelName = $.slackChannelName; + this.slackTeamId = $.slackTeamId; + this.slackTeamName = $.slackTeamName; + this.snsTopicArns = $.snsTopicArns; + this.tags = $.tags; + this.tagsAll = $.tagsAll; + this.timeouts = $.timeouts; + this.userAuthorizationRequired = $.userAuthorizationRequired; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SlackChannelConfigurationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SlackChannelConfigurationState $; + + public Builder() { + $ = new SlackChannelConfigurationState(); + } + + public Builder(SlackChannelConfigurationState defaults) { + $ = new SlackChannelConfigurationState(Objects.requireNonNull(defaults)); + } + + /** + * @param chatConfigurationArn ARN of the Slack channel configuration. + * + * @return builder + * + */ + public Builder chatConfigurationArn(@Nullable Output chatConfigurationArn) { + $.chatConfigurationArn = chatConfigurationArn; + return this; + } + + /** + * @param chatConfigurationArn ARN of the Slack channel configuration. + * + * @return builder + * + */ + public Builder chatConfigurationArn(String chatConfigurationArn) { + return chatConfigurationArn(Output.of(chatConfigurationArn)); + } + + /** + * @param configurationName Name of the Slack channel configuration. + * + * @return builder + * + */ + public Builder configurationName(@Nullable Output configurationName) { + $.configurationName = configurationName; + return this; + } + + /** + * @param configurationName Name of the Slack channel configuration. + * + * @return builder + * + */ + public Builder configurationName(String configurationName) { + return configurationName(Output.of(configurationName)); + } + + /** + * @param guardrailPolicyArns List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + * @return builder + * + */ + public Builder guardrailPolicyArns(@Nullable Output> guardrailPolicyArns) { + $.guardrailPolicyArns = guardrailPolicyArns; + return this; + } + + /** + * @param guardrailPolicyArns List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + * @return builder + * + */ + public Builder guardrailPolicyArns(List guardrailPolicyArns) { + return guardrailPolicyArns(Output.of(guardrailPolicyArns)); + } + + /** + * @param guardrailPolicyArns List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + * @return builder + * + */ + public Builder guardrailPolicyArns(String... guardrailPolicyArns) { + return guardrailPolicyArns(List.of(guardrailPolicyArns)); + } + + /** + * @param iamRoleArn User-defined role that AWS Chatbot assumes. This is not the service-linked role. + * + * @return builder + * + */ + public Builder iamRoleArn(@Nullable Output iamRoleArn) { + $.iamRoleArn = iamRoleArn; + return this; + } + + /** + * @param iamRoleArn User-defined role that AWS Chatbot assumes. This is not the service-linked role. + * + * @return builder + * + */ + public Builder iamRoleArn(String iamRoleArn) { + return iamRoleArn(Output.of(iamRoleArn)); + } + + /** + * @param loggingLevel Logging levels include `ERROR`, `INFO`, or `NONE`. + * + * @return builder + * + */ + public Builder loggingLevel(@Nullable Output loggingLevel) { + $.loggingLevel = loggingLevel; + return this; + } + + /** + * @param loggingLevel Logging levels include `ERROR`, `INFO`, or `NONE`. + * + * @return builder + * + */ + public Builder loggingLevel(String loggingLevel) { + return loggingLevel(Output.of(loggingLevel)); + } + + /** + * @param slackChannelId ID of the Slack channel. For example, `C07EZ1ABC23`. + * + * @return builder + * + */ + public Builder slackChannelId(@Nullable Output slackChannelId) { + $.slackChannelId = slackChannelId; + return this; + } + + /** + * @param slackChannelId ID of the Slack channel. For example, `C07EZ1ABC23`. + * + * @return builder + * + */ + public Builder slackChannelId(String slackChannelId) { + return slackChannelId(Output.of(slackChannelId)); + } + + /** + * @param slackChannelName Name of the Slack channel. + * + * @return builder + * + */ + public Builder slackChannelName(@Nullable Output slackChannelName) { + $.slackChannelName = slackChannelName; + return this; + } + + /** + * @param slackChannelName Name of the Slack channel. + * + * @return builder + * + */ + public Builder slackChannelName(String slackChannelName) { + return slackChannelName(Output.of(slackChannelName)); + } + + /** + * @param slackTeamId ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder slackTeamId(@Nullable Output slackTeamId) { + $.slackTeamId = slackTeamId; + return this; + } + + /** + * @param slackTeamId ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder slackTeamId(String slackTeamId) { + return slackTeamId(Output.of(slackTeamId)); + } + + /** + * @param slackTeamName Name of the Slack team. + * + * @return builder + * + */ + public Builder slackTeamName(@Nullable Output slackTeamName) { + $.slackTeamName = slackTeamName; + return this; + } + + /** + * @param slackTeamName Name of the Slack team. + * + * @return builder + * + */ + public Builder slackTeamName(String slackTeamName) { + return slackTeamName(Output.of(slackTeamName)); + } + + /** + * @param snsTopicArns ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + * @return builder + * + */ + public Builder snsTopicArns(@Nullable Output> snsTopicArns) { + $.snsTopicArns = snsTopicArns; + return this; + } + + /** + * @param snsTopicArns ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + * @return builder + * + */ + public Builder snsTopicArns(List snsTopicArns) { + return snsTopicArns(Output.of(snsTopicArns)); + } + + /** + * @param snsTopicArns ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + * @return builder + * + */ + public Builder snsTopicArns(String... snsTopicArns) { + return snsTopicArns(List.of(snsTopicArns)); + } + + /** + * @param tags Map of tags assigned to the resource. + * + * @return builder + * + */ + public Builder tags(@Nullable Output> tags) { + $.tags = tags; + return this; + } + + /** + * @param tags Map of tags assigned to the resource. + * + * @return builder + * + */ + public Builder tags(Map tags) { + return tags(Output.of(tags)); + } + + /** + * @param tagsAll Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @return builder + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + public Builder tagsAll(@Nullable Output> tagsAll) { + $.tagsAll = tagsAll; + return this; + } + + /** + * @param tagsAll Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @return builder + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + public Builder tagsAll(Map tagsAll) { + return tagsAll(Output.of(tagsAll)); + } + + public Builder timeouts(@Nullable Output timeouts) { + $.timeouts = timeouts; + return this; + } + + public Builder timeouts(SlackChannelConfigurationTimeoutsArgs timeouts) { + return timeouts(Output.of(timeouts)); + } + + /** + * @param userAuthorizationRequired Enables use of a user role requirement in your chat configuration. + * + * @return builder + * + */ + public Builder userAuthorizationRequired(@Nullable Output userAuthorizationRequired) { + $.userAuthorizationRequired = userAuthorizationRequired; + return this; + } + + /** + * @param userAuthorizationRequired Enables use of a user role requirement in your chat configuration. + * + * @return builder + * + */ + public Builder userAuthorizationRequired(Boolean userAuthorizationRequired) { + return userAuthorizationRequired(Output.of(userAuthorizationRequired)); + } + + public SlackChannelConfigurationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/SlackChannelConfigurationTimeoutsArgs.java b/sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/SlackChannelConfigurationTimeoutsArgs.java new file mode 100644 index 00000000000..09ac96e7a13 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/SlackChannelConfigurationTimeoutsArgs.java @@ -0,0 +1,157 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.chatbot.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SlackChannelConfigurationTimeoutsArgs extends com.pulumi.resources.ResourceArgs { + + public static final SlackChannelConfigurationTimeoutsArgs Empty = new SlackChannelConfigurationTimeoutsArgs(); + + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + @Import(name="create") + private @Nullable Output create; + + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + public Optional> create() { + return Optional.ofNullable(this.create); + } + + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + */ + @Import(name="delete") + private @Nullable Output delete; + + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + */ + public Optional> delete() { + return Optional.ofNullable(this.delete); + } + + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + @Import(name="update") + private @Nullable Output update; + + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + public Optional> update() { + return Optional.ofNullable(this.update); + } + + private SlackChannelConfigurationTimeoutsArgs() {} + + private SlackChannelConfigurationTimeoutsArgs(SlackChannelConfigurationTimeoutsArgs $) { + this.create = $.create; + this.delete = $.delete; + this.update = $.update; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SlackChannelConfigurationTimeoutsArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SlackChannelConfigurationTimeoutsArgs $; + + public Builder() { + $ = new SlackChannelConfigurationTimeoutsArgs(); + } + + public Builder(SlackChannelConfigurationTimeoutsArgs defaults) { + $ = new SlackChannelConfigurationTimeoutsArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param create A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + * @return builder + * + */ + public Builder create(@Nullable Output create) { + $.create = create; + return this; + } + + /** + * @param create A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + * @return builder + * + */ + public Builder create(String create) { + return create(Output.of(create)); + } + + /** + * @param delete A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + * @return builder + * + */ + public Builder delete(@Nullable Output delete) { + $.delete = delete; + return this; + } + + /** + * @param delete A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + * @return builder + * + */ + public Builder delete(String delete) { + return delete(Output.of(delete)); + } + + /** + * @param update A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + * @return builder + * + */ + public Builder update(@Nullable Output update) { + $.update = update; + return this; + } + + /** + * @param update A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + * @return builder + * + */ + public Builder update(String update) { + return update(Output.of(update)); + } + + public SlackChannelConfigurationTimeoutsArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/TeamsChannelConfigurationState.java b/sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/TeamsChannelConfigurationState.java new file mode 100644 index 00000000000..fcbce3c19a4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/TeamsChannelConfigurationState.java @@ -0,0 +1,629 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.chatbot.inputs; + +import com.pulumi.aws.chatbot.inputs.TeamsChannelConfigurationTimeoutsArgs; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class TeamsChannelConfigurationState extends com.pulumi.resources.ResourceArgs { + + public static final TeamsChannelConfigurationState Empty = new TeamsChannelConfigurationState(); + + /** + * ID of the Microsoft Teams channel. + * + */ + @Import(name="channelId") + private @Nullable Output channelId; + + /** + * @return ID of the Microsoft Teams channel. + * + */ + public Optional> channelId() { + return Optional.ofNullable(this.channelId); + } + + /** + * Name of the Microsoft Teams channel. + * + */ + @Import(name="channelName") + private @Nullable Output channelName; + + /** + * @return Name of the Microsoft Teams channel. + * + */ + public Optional> channelName() { + return Optional.ofNullable(this.channelName); + } + + /** + * ARN of the Microsoft Teams channel configuration. + * + */ + @Import(name="chatConfigurationArn") + private @Nullable Output chatConfigurationArn; + + /** + * @return ARN of the Microsoft Teams channel configuration. + * + */ + public Optional> chatConfigurationArn() { + return Optional.ofNullable(this.chatConfigurationArn); + } + + /** + * Name of the Microsoft Teams channel configuration. + * + */ + @Import(name="configurationName") + private @Nullable Output configurationName; + + /** + * @return Name of the Microsoft Teams channel configuration. + * + */ + public Optional> configurationName() { + return Optional.ofNullable(this.configurationName); + } + + /** + * List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + */ + @Import(name="guardrailPolicyArns") + private @Nullable Output> guardrailPolicyArns; + + /** + * @return List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + */ + public Optional>> guardrailPolicyArns() { + return Optional.ofNullable(this.guardrailPolicyArns); + } + + /** + * ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + * + */ + @Import(name="iamRoleArn") + private @Nullable Output iamRoleArn; + + /** + * @return ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + * + */ + public Optional> iamRoleArn() { + return Optional.ofNullable(this.iamRoleArn); + } + + /** + * Logging levels include `ERROR`, `INFO`, or `NONE`. + * + */ + @Import(name="loggingLevel") + private @Nullable Output loggingLevel; + + /** + * @return Logging levels include `ERROR`, `INFO`, or `NONE`. + * + */ + public Optional> loggingLevel() { + return Optional.ofNullable(this.loggingLevel); + } + + /** + * ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + */ + @Import(name="snsTopicArns") + private @Nullable Output> snsTopicArns; + + /** + * @return ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + */ + public Optional>> snsTopicArns() { + return Optional.ofNullable(this.snsTopicArns); + } + + /** + * Map of tags assigned to the resource. + * + */ + @Import(name="tags") + private @Nullable Output> tags; + + /** + * @return Map of tags assigned to the resource. + * + */ + public Optional>> tags() { + return Optional.ofNullable(this.tags); + } + + /** + * Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + @Import(name="tagsAll") + private @Nullable Output> tagsAll; + + /** + * @return Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + public Optional>> tagsAll() { + return Optional.ofNullable(this.tagsAll); + } + + /** + * ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + * + */ + @Import(name="teamId") + private @Nullable Output teamId; + + /** + * @return ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + * + */ + public Optional> teamId() { + return Optional.ofNullable(this.teamId); + } + + /** + * Name of the Microsoft Teams team. + * + */ + @Import(name="teamName") + private @Nullable Output teamName; + + /** + * @return Name of the Microsoft Teams team. + * + */ + public Optional> teamName() { + return Optional.ofNullable(this.teamName); + } + + /** + * ID of the Microsoft Teams tenant. + * + * The following arguments are optional: + * + */ + @Import(name="tenantId") + private @Nullable Output tenantId; + + /** + * @return ID of the Microsoft Teams tenant. + * + * The following arguments are optional: + * + */ + public Optional> tenantId() { + return Optional.ofNullable(this.tenantId); + } + + @Import(name="timeouts") + private @Nullable Output timeouts; + + public Optional> timeouts() { + return Optional.ofNullable(this.timeouts); + } + + /** + * Enables use of a user role requirement in your chat configuration. + * + */ + @Import(name="userAuthorizationRequired") + private @Nullable Output userAuthorizationRequired; + + /** + * @return Enables use of a user role requirement in your chat configuration. + * + */ + public Optional> userAuthorizationRequired() { + return Optional.ofNullable(this.userAuthorizationRequired); + } + + private TeamsChannelConfigurationState() {} + + private TeamsChannelConfigurationState(TeamsChannelConfigurationState $) { + this.channelId = $.channelId; + this.channelName = $.channelName; + this.chatConfigurationArn = $.chatConfigurationArn; + this.configurationName = $.configurationName; + this.guardrailPolicyArns = $.guardrailPolicyArns; + this.iamRoleArn = $.iamRoleArn; + this.loggingLevel = $.loggingLevel; + this.snsTopicArns = $.snsTopicArns; + this.tags = $.tags; + this.tagsAll = $.tagsAll; + this.teamId = $.teamId; + this.teamName = $.teamName; + this.tenantId = $.tenantId; + this.timeouts = $.timeouts; + this.userAuthorizationRequired = $.userAuthorizationRequired; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(TeamsChannelConfigurationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private TeamsChannelConfigurationState $; + + public Builder() { + $ = new TeamsChannelConfigurationState(); + } + + public Builder(TeamsChannelConfigurationState defaults) { + $ = new TeamsChannelConfigurationState(Objects.requireNonNull(defaults)); + } + + /** + * @param channelId ID of the Microsoft Teams channel. + * + * @return builder + * + */ + public Builder channelId(@Nullable Output channelId) { + $.channelId = channelId; + return this; + } + + /** + * @param channelId ID of the Microsoft Teams channel. + * + * @return builder + * + */ + public Builder channelId(String channelId) { + return channelId(Output.of(channelId)); + } + + /** + * @param channelName Name of the Microsoft Teams channel. + * + * @return builder + * + */ + public Builder channelName(@Nullable Output channelName) { + $.channelName = channelName; + return this; + } + + /** + * @param channelName Name of the Microsoft Teams channel. + * + * @return builder + * + */ + public Builder channelName(String channelName) { + return channelName(Output.of(channelName)); + } + + /** + * @param chatConfigurationArn ARN of the Microsoft Teams channel configuration. + * + * @return builder + * + */ + public Builder chatConfigurationArn(@Nullable Output chatConfigurationArn) { + $.chatConfigurationArn = chatConfigurationArn; + return this; + } + + /** + * @param chatConfigurationArn ARN of the Microsoft Teams channel configuration. + * + * @return builder + * + */ + public Builder chatConfigurationArn(String chatConfigurationArn) { + return chatConfigurationArn(Output.of(chatConfigurationArn)); + } + + /** + * @param configurationName Name of the Microsoft Teams channel configuration. + * + * @return builder + * + */ + public Builder configurationName(@Nullable Output configurationName) { + $.configurationName = configurationName; + return this; + } + + /** + * @param configurationName Name of the Microsoft Teams channel configuration. + * + * @return builder + * + */ + public Builder configurationName(String configurationName) { + return configurationName(Output.of(configurationName)); + } + + /** + * @param guardrailPolicyArns List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + * @return builder + * + */ + public Builder guardrailPolicyArns(@Nullable Output> guardrailPolicyArns) { + $.guardrailPolicyArns = guardrailPolicyArns; + return this; + } + + /** + * @param guardrailPolicyArns List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + * @return builder + * + */ + public Builder guardrailPolicyArns(List guardrailPolicyArns) { + return guardrailPolicyArns(Output.of(guardrailPolicyArns)); + } + + /** + * @param guardrailPolicyArns List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + * + * @return builder + * + */ + public Builder guardrailPolicyArns(String... guardrailPolicyArns) { + return guardrailPolicyArns(List.of(guardrailPolicyArns)); + } + + /** + * @param iamRoleArn ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + * + * @return builder + * + */ + public Builder iamRoleArn(@Nullable Output iamRoleArn) { + $.iamRoleArn = iamRoleArn; + return this; + } + + /** + * @param iamRoleArn ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + * + * @return builder + * + */ + public Builder iamRoleArn(String iamRoleArn) { + return iamRoleArn(Output.of(iamRoleArn)); + } + + /** + * @param loggingLevel Logging levels include `ERROR`, `INFO`, or `NONE`. + * + * @return builder + * + */ + public Builder loggingLevel(@Nullable Output loggingLevel) { + $.loggingLevel = loggingLevel; + return this; + } + + /** + * @param loggingLevel Logging levels include `ERROR`, `INFO`, or `NONE`. + * + * @return builder + * + */ + public Builder loggingLevel(String loggingLevel) { + return loggingLevel(Output.of(loggingLevel)); + } + + /** + * @param snsTopicArns ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + * @return builder + * + */ + public Builder snsTopicArns(@Nullable Output> snsTopicArns) { + $.snsTopicArns = snsTopicArns; + return this; + } + + /** + * @param snsTopicArns ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + * @return builder + * + */ + public Builder snsTopicArns(List snsTopicArns) { + return snsTopicArns(Output.of(snsTopicArns)); + } + + /** + * @param snsTopicArns ARNs of the SNS topics that deliver notifications to AWS Chatbot. + * + * @return builder + * + */ + public Builder snsTopicArns(String... snsTopicArns) { + return snsTopicArns(List.of(snsTopicArns)); + } + + /** + * @param tags Map of tags assigned to the resource. + * + * @return builder + * + */ + public Builder tags(@Nullable Output> tags) { + $.tags = tags; + return this; + } + + /** + * @param tags Map of tags assigned to the resource. + * + * @return builder + * + */ + public Builder tags(Map tags) { + return tags(Output.of(tags)); + } + + /** + * @param tagsAll Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @return builder + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + public Builder tagsAll(@Nullable Output> tagsAll) { + $.tagsAll = tagsAll; + return this; + } + + /** + * @param tagsAll Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @return builder + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + public Builder tagsAll(Map tagsAll) { + return tagsAll(Output.of(tagsAll)); + } + + /** + * @param teamId ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + * + * @return builder + * + */ + public Builder teamId(@Nullable Output teamId) { + $.teamId = teamId; + return this; + } + + /** + * @param teamId ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + * + * @return builder + * + */ + public Builder teamId(String teamId) { + return teamId(Output.of(teamId)); + } + + /** + * @param teamName Name of the Microsoft Teams team. + * + * @return builder + * + */ + public Builder teamName(@Nullable Output teamName) { + $.teamName = teamName; + return this; + } + + /** + * @param teamName Name of the Microsoft Teams team. + * + * @return builder + * + */ + public Builder teamName(String teamName) { + return teamName(Output.of(teamName)); + } + + /** + * @param tenantId ID of the Microsoft Teams tenant. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder tenantId(@Nullable Output tenantId) { + $.tenantId = tenantId; + return this; + } + + /** + * @param tenantId ID of the Microsoft Teams tenant. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder tenantId(String tenantId) { + return tenantId(Output.of(tenantId)); + } + + public Builder timeouts(@Nullable Output timeouts) { + $.timeouts = timeouts; + return this; + } + + public Builder timeouts(TeamsChannelConfigurationTimeoutsArgs timeouts) { + return timeouts(Output.of(timeouts)); + } + + /** + * @param userAuthorizationRequired Enables use of a user role requirement in your chat configuration. + * + * @return builder + * + */ + public Builder userAuthorizationRequired(@Nullable Output userAuthorizationRequired) { + $.userAuthorizationRequired = userAuthorizationRequired; + return this; + } + + /** + * @param userAuthorizationRequired Enables use of a user role requirement in your chat configuration. + * + * @return builder + * + */ + public Builder userAuthorizationRequired(Boolean userAuthorizationRequired) { + return userAuthorizationRequired(Output.of(userAuthorizationRequired)); + } + + public TeamsChannelConfigurationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/TeamsChannelConfigurationTimeoutsArgs.java b/sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/TeamsChannelConfigurationTimeoutsArgs.java new file mode 100644 index 00000000000..bc9045f5736 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/chatbot/inputs/TeamsChannelConfigurationTimeoutsArgs.java @@ -0,0 +1,157 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.chatbot.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class TeamsChannelConfigurationTimeoutsArgs extends com.pulumi.resources.ResourceArgs { + + public static final TeamsChannelConfigurationTimeoutsArgs Empty = new TeamsChannelConfigurationTimeoutsArgs(); + + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + @Import(name="create") + private @Nullable Output create; + + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + public Optional> create() { + return Optional.ofNullable(this.create); + } + + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + */ + @Import(name="delete") + private @Nullable Output delete; + + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + */ + public Optional> delete() { + return Optional.ofNullable(this.delete); + } + + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + @Import(name="update") + private @Nullable Output update; + + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + public Optional> update() { + return Optional.ofNullable(this.update); + } + + private TeamsChannelConfigurationTimeoutsArgs() {} + + private TeamsChannelConfigurationTimeoutsArgs(TeamsChannelConfigurationTimeoutsArgs $) { + this.create = $.create; + this.delete = $.delete; + this.update = $.update; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(TeamsChannelConfigurationTimeoutsArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private TeamsChannelConfigurationTimeoutsArgs $; + + public Builder() { + $ = new TeamsChannelConfigurationTimeoutsArgs(); + } + + public Builder(TeamsChannelConfigurationTimeoutsArgs defaults) { + $ = new TeamsChannelConfigurationTimeoutsArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param create A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + * @return builder + * + */ + public Builder create(@Nullable Output create) { + $.create = create; + return this; + } + + /** + * @param create A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + * @return builder + * + */ + public Builder create(String create) { + return create(Output.of(create)); + } + + /** + * @param delete A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + * @return builder + * + */ + public Builder delete(@Nullable Output delete) { + $.delete = delete; + return this; + } + + /** + * @param delete A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + * @return builder + * + */ + public Builder delete(String delete) { + return delete(Output.of(delete)); + } + + /** + * @param update A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + * @return builder + * + */ + public Builder update(@Nullable Output update) { + $.update = update; + return this; + } + + /** + * @param update A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + * @return builder + * + */ + public Builder update(String update) { + return update(Output.of(update)); + } + + public TeamsChannelConfigurationTimeoutsArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/chatbot/outputs/SlackChannelConfigurationTimeouts.java b/sdk/java/src/main/java/com/pulumi/aws/chatbot/outputs/SlackChannelConfigurationTimeouts.java new file mode 100644 index 00000000000..82afd8709e4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/chatbot/outputs/SlackChannelConfigurationTimeouts.java @@ -0,0 +1,99 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.chatbot.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class SlackChannelConfigurationTimeouts { + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + private @Nullable String create; + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + */ + private @Nullable String delete; + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + private @Nullable String update; + + private SlackChannelConfigurationTimeouts() {} + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + public Optional create() { + return Optional.ofNullable(this.create); + } + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + */ + public Optional delete() { + return Optional.ofNullable(this.delete); + } + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + public Optional update() { + return Optional.ofNullable(this.update); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(SlackChannelConfigurationTimeouts defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String create; + private @Nullable String delete; + private @Nullable String update; + public Builder() {} + public Builder(SlackChannelConfigurationTimeouts defaults) { + Objects.requireNonNull(defaults); + this.create = defaults.create; + this.delete = defaults.delete; + this.update = defaults.update; + } + + @CustomType.Setter + public Builder create(@Nullable String create) { + + this.create = create; + return this; + } + @CustomType.Setter + public Builder delete(@Nullable String delete) { + + this.delete = delete; + return this; + } + @CustomType.Setter + public Builder update(@Nullable String update) { + + this.update = update; + return this; + } + public SlackChannelConfigurationTimeouts build() { + final var _resultValue = new SlackChannelConfigurationTimeouts(); + _resultValue.create = create; + _resultValue.delete = delete; + _resultValue.update = update; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/chatbot/outputs/TeamsChannelConfigurationTimeouts.java b/sdk/java/src/main/java/com/pulumi/aws/chatbot/outputs/TeamsChannelConfigurationTimeouts.java new file mode 100644 index 00000000000..1cb00bdb69f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/chatbot/outputs/TeamsChannelConfigurationTimeouts.java @@ -0,0 +1,99 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.chatbot.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class TeamsChannelConfigurationTimeouts { + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + private @Nullable String create; + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + */ + private @Nullable String delete; + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + private @Nullable String update; + + private TeamsChannelConfigurationTimeouts() {} + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + public Optional create() { + return Optional.ofNullable(this.create); + } + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + */ + public Optional delete() { + return Optional.ofNullable(this.delete); + } + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + public Optional update() { + return Optional.ofNullable(this.update); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(TeamsChannelConfigurationTimeouts defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String create; + private @Nullable String delete; + private @Nullable String update; + public Builder() {} + public Builder(TeamsChannelConfigurationTimeouts defaults) { + Objects.requireNonNull(defaults); + this.create = defaults.create; + this.delete = defaults.delete; + this.update = defaults.update; + } + + @CustomType.Setter + public Builder create(@Nullable String create) { + + this.create = create; + return this; + } + @CustomType.Setter + public Builder delete(@Nullable String delete) { + + this.delete = delete; + return this; + } + @CustomType.Setter + public Builder update(@Nullable String update) { + + this.update = update; + return this; + } + public TeamsChannelConfigurationTimeouts build() { + final var _resultValue = new TeamsChannelConfigurationTimeouts(); + _resultValue.create = create; + _resultValue.delete = delete; + _resultValue.update = update; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/cloudsearch/inputs/DomainIndexFieldArgs.java b/sdk/java/src/main/java/com/pulumi/aws/cloudsearch/inputs/DomainIndexFieldArgs.java index 744b76c646f..b4ee905075d 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/cloudsearch/inputs/DomainIndexFieldArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/cloudsearch/inputs/DomainIndexFieldArgs.java @@ -78,14 +78,14 @@ public Optional> highlight() { } /** - * A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + * A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. * */ @Import(name="name", required=true) private Output name; /** - * @return A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + * @return A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. * */ public Output name() { @@ -285,7 +285,7 @@ public Builder highlight(Boolean highlight) { } /** - * @param name A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + * @param name A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. * * @return builder * @@ -296,7 +296,7 @@ public Builder name(Output name) { } /** - * @param name A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + * @param name A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/aws/cloudsearch/outputs/DomainIndexField.java b/sdk/java/src/main/java/com/pulumi/aws/cloudsearch/outputs/DomainIndexField.java index 7785d613ff4..a494238c238 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/cloudsearch/outputs/DomainIndexField.java +++ b/sdk/java/src/main/java/com/pulumi/aws/cloudsearch/outputs/DomainIndexField.java @@ -34,7 +34,7 @@ public final class DomainIndexField { */ private @Nullable Boolean highlight; /** - * @return A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + * @return A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. * */ private String name; @@ -94,7 +94,7 @@ public Optional highlight() { return Optional.ofNullable(this.highlight); } /** - * @return A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + * @return A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. * */ public String name() { diff --git a/sdk/java/src/main/java/com/pulumi/aws/config/inputs/Endpoints.java b/sdk/java/src/main/java/com/pulumi/aws/config/inputs/Endpoints.java index 332e44e4832..690640ab6f6 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/config/inputs/Endpoints.java +++ b/sdk/java/src/main/java/com/pulumi/aws/config/inputs/Endpoints.java @@ -1126,6 +1126,11 @@ public final class Endpoints { * */ private @Nullable String rekognition; + /** + * @return Use this to override the default service endpoint URL + * + */ + private @Nullable String resiliencehub; /** * @return Use this to override the default service endpoint URL * @@ -3009,6 +3014,13 @@ public Optional redshiftserverless() { public Optional rekognition() { return Optional.ofNullable(this.rekognition); } + /** + * @return Use this to override the default service endpoint URL + * + */ + public Optional resiliencehub() { + return Optional.ofNullable(this.resiliencehub); + } /** * @return Use this to override the default service endpoint URL * @@ -3690,6 +3702,7 @@ public static final class Builder { private @Nullable String redshiftdataapiservice; private @Nullable String redshiftserverless; private @Nullable String rekognition; + private @Nullable String resiliencehub; private @Nullable String resourceexplorer2; private @Nullable String resourcegroups; private @Nullable String resourcegroupstagging; @@ -3980,6 +3993,7 @@ public Builder(Endpoints defaults) { this.redshiftdataapiservice = defaults.redshiftdataapiservice; this.redshiftserverless = defaults.redshiftserverless; this.rekognition = defaults.rekognition; + this.resiliencehub = defaults.resiliencehub; this.resourceexplorer2 = defaults.resourceexplorer2; this.resourcegroups = defaults.resourcegroups; this.resourcegroupstagging = defaults.resourcegroupstagging; @@ -5385,6 +5399,12 @@ public Builder rekognition(@Nullable String rekognition) { return this; } @CustomType.Setter + public Builder resiliencehub(@Nullable String resiliencehub) { + + this.resiliencehub = resiliencehub; + return this; + } + @CustomType.Setter public Builder resourceexplorer2(@Nullable String resourceexplorer2) { this.resourceexplorer2 = resourceexplorer2; @@ -5993,6 +6013,7 @@ public Endpoints build() { _resultValue.redshiftdataapiservice = redshiftdataapiservice; _resultValue.redshiftserverless = redshiftserverless; _resultValue.rekognition = rekognition; + _resultValue.resiliencehub = resiliencehub; _resultValue.resourceexplorer2 = resourceexplorer2; _resultValue.resourcegroups = resourcegroups; _resultValue.resourcegroupstagging = resourcegroupstagging; diff --git a/sdk/java/src/main/java/com/pulumi/aws/datazone/Glossary.java b/sdk/java/src/main/java/com/pulumi/aws/datazone/Glossary.java new file mode 100644 index 00000000000..afa1bad34b8 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/datazone/Glossary.java @@ -0,0 +1,298 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.datazone; + +import com.pulumi.aws.Utilities; +import com.pulumi.aws.datazone.GlossaryArgs; +import com.pulumi.aws.datazone.inputs.GlossaryState; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import java.lang.String; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * Resource for managing an AWS DataZone Glossary. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.iam.Role;
+ * import com.pulumi.aws.iam.RoleArgs;
+ * import com.pulumi.aws.iam.inputs.RoleInlinePolicyArgs;
+ * import com.pulumi.aws.datazone.Domain;
+ * import com.pulumi.aws.datazone.DomainArgs;
+ * import com.pulumi.aws.ec2.SecurityGroup;
+ * import com.pulumi.aws.ec2.SecurityGroupArgs;
+ * import com.pulumi.aws.datazone.Project;
+ * import com.pulumi.aws.datazone.ProjectArgs;
+ * import com.pulumi.aws.datazone.Glossary;
+ * import com.pulumi.aws.datazone.GlossaryArgs;
+ * 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 domainExecutionRole = new Role("domainExecutionRole", RoleArgs.builder()
+ *             .name("example_name")
+ *             .assumeRolePolicy(serializeJson(
+ *                 jsonObject(
+ *                     jsonProperty("Version", "2012-10-17"),
+ *                     jsonProperty("Statement", jsonArray(
+ *                         jsonObject(
+ *                             jsonProperty("Action", jsonArray(
+ *                                 "sts:AssumeRole", 
+ *                                 "sts:TagSession"
+ *                             )),
+ *                             jsonProperty("Effect", "Allow"),
+ *                             jsonProperty("Principal", jsonObject(
+ *                                 jsonProperty("Service", "datazone.amazonaws.com")
+ *                             ))
+ *                         ), 
+ *                         jsonObject(
+ *                             jsonProperty("Action", jsonArray(
+ *                                 "sts:AssumeRole", 
+ *                                 "sts:TagSession"
+ *                             )),
+ *                             jsonProperty("Effect", "Allow"),
+ *                             jsonProperty("Principal", jsonObject(
+ *                                 jsonProperty("Service", "cloudformation.amazonaws.com")
+ *                             ))
+ *                         )
+ *                     ))
+ *                 )))
+ *             .inlinePolicies(RoleInlinePolicyArgs.builder()
+ *                 .name("example_name")
+ *                 .policy(serializeJson(
+ *                     jsonObject(
+ *                         jsonProperty("Version", "2012-10-17"),
+ *                         jsonProperty("Statement", jsonArray(jsonObject(
+ *                             jsonProperty("Action", jsonArray(
+ *                                 "datazone:*", 
+ *                                 "ram:*", 
+ *                                 "sso:*", 
+ *                                 "kms:*"
+ *                             )),
+ *                             jsonProperty("Effect", "Allow"),
+ *                             jsonProperty("Resource", "*")
+ *                         )))
+ *                     )))
+ *                 .build())
+ *             .build());
+ * 
+ *         var test = new Domain("test", DomainArgs.builder()
+ *             .name("example_name")
+ *             .domainExecutionRole(domainExecutionRole.arn())
+ *             .build());
+ * 
+ *         var testSecurityGroup = new SecurityGroup("testSecurityGroup", SecurityGroupArgs.builder()
+ *             .name("example_name")
+ *             .build());
+ * 
+ *         var testProject = new Project("testProject", ProjectArgs.builder()
+ *             .domainIdentifier(test.id())
+ *             .glossaryTerms("2N8w6XJCwZf")
+ *             .name("example_name")
+ *             .description("desc")
+ *             .skipDeletionCheck(true)
+ *             .build());
+ * 
+ *         var testGlossary = new Glossary("testGlossary", GlossaryArgs.builder()
+ *             .description("description")
+ *             .name("example_name")
+ *             .owningProjectIdentifier(testProject.id())
+ *             .status("DISABLED")
+ *             .domainIdentifier(testProject.domainIdentifier())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ### Basic Usage + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.datazone.Glossary;
+ * import com.pulumi.aws.datazone.GlossaryArgs;
+ * 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 test = new Glossary("test", GlossaryArgs.builder()
+ *             .description("description")
+ *             .name("example_name")
+ *             .owningProjectIdentifier(testAwsDatazoneProject.id())
+ *             .status("DISABLED")
+ *             .domainIdentifier(testAwsDatazoneProject.domainIdentifier())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * Using `pulumi import`, import DataZone Glossary using the import Datazone Glossary using a comma-delimited string combining the domain id, glossary id, and the id of the project it's under. For example: + * + * ```sh + * $ pulumi import aws:datazone/glossary:Glossary example domain-id,glossary-id,owning-project-identifier + * ``` + * + */ +@ResourceType(type="aws:datazone/glossary:Glossary") +public class Glossary extends com.pulumi.resources.CustomResource { + /** + * Description of the glossary. Must have a length between 0 and 4096. + * + */ + @Export(name="description", refs={String.class}, tree="[0]") + private Output description; + + /** + * @return Description of the glossary. Must have a length between 0 and 4096. + * + */ + public Output> description() { + return Codegen.optional(this.description); + } + @Export(name="domainIdentifier", refs={String.class}, tree="[0]") + private Output domainIdentifier; + + public Output domainIdentifier() { + return this.domainIdentifier; + } + /** + * Name of the glossary. Must have length between 1 and 256. + * + */ + @Export(name="name", refs={String.class}, tree="[0]") + private Output name; + + /** + * @return Name of the glossary. Must have length between 1 and 256. + * + */ + public Output name() { + return this.name; + } + /** + * ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + * + * The following arguments are optional: + * + */ + @Export(name="owningProjectIdentifier", refs={String.class}, tree="[0]") + private Output owningProjectIdentifier; + + /** + * @return ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + * + * The following arguments are optional: + * + */ + public Output owningProjectIdentifier() { + return this.owningProjectIdentifier; + } + /** + * Status of business glossary. Valid values are DISABLED and ENABLED. + * + */ + @Export(name="status", refs={String.class}, tree="[0]") + private Output status; + + /** + * @return Status of business glossary. Valid values are DISABLED and ENABLED. + * + */ + public Output> status() { + return Codegen.optional(this.status); + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public Glossary(String name) { + this(name, GlossaryArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public Glossary(String name, GlossaryArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public Glossary(String name, GlossaryArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("aws:datazone/glossary:Glossary", name, args == null ? GlossaryArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private Glossary(String name, Output id, @Nullable GlossaryState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("aws:datazone/glossary:Glossary", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static Glossary get(String name, Output id, @Nullable GlossaryState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new Glossary(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/datazone/GlossaryArgs.java b/sdk/java/src/main/java/com/pulumi/aws/datazone/GlossaryArgs.java new file mode 100644 index 00000000000..84bf630ccc6 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/datazone/GlossaryArgs.java @@ -0,0 +1,226 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.datazone; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class GlossaryArgs extends com.pulumi.resources.ResourceArgs { + + public static final GlossaryArgs Empty = new GlossaryArgs(); + + /** + * Description of the glossary. Must have a length between 0 and 4096. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return Description of the glossary. Must have a length between 0 and 4096. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + @Import(name="domainIdentifier", required=true) + private Output domainIdentifier; + + public Output domainIdentifier() { + return this.domainIdentifier; + } + + /** + * Name of the glossary. Must have length between 1 and 256. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Name of the glossary. Must have length between 1 and 256. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + * + * The following arguments are optional: + * + */ + @Import(name="owningProjectIdentifier", required=true) + private Output owningProjectIdentifier; + + /** + * @return ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + * + * The following arguments are optional: + * + */ + public Output owningProjectIdentifier() { + return this.owningProjectIdentifier; + } + + /** + * Status of business glossary. Valid values are DISABLED and ENABLED. + * + */ + @Import(name="status") + private @Nullable Output status; + + /** + * @return Status of business glossary. Valid values are DISABLED and ENABLED. + * + */ + public Optional> status() { + return Optional.ofNullable(this.status); + } + + private GlossaryArgs() {} + + private GlossaryArgs(GlossaryArgs $) { + this.description = $.description; + this.domainIdentifier = $.domainIdentifier; + this.name = $.name; + this.owningProjectIdentifier = $.owningProjectIdentifier; + this.status = $.status; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GlossaryArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GlossaryArgs $; + + public Builder() { + $ = new GlossaryArgs(); + } + + public Builder(GlossaryArgs defaults) { + $ = new GlossaryArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param description Description of the glossary. Must have a length between 0 and 4096. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description Description of the glossary. Must have a length between 0 and 4096. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + public Builder domainIdentifier(Output domainIdentifier) { + $.domainIdentifier = domainIdentifier; + return this; + } + + public Builder domainIdentifier(String domainIdentifier) { + return domainIdentifier(Output.of(domainIdentifier)); + } + + /** + * @param name Name of the glossary. Must have length between 1 and 256. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Name of the glossary. Must have length between 1 and 256. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param owningProjectIdentifier ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder owningProjectIdentifier(Output owningProjectIdentifier) { + $.owningProjectIdentifier = owningProjectIdentifier; + return this; + } + + /** + * @param owningProjectIdentifier ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder owningProjectIdentifier(String owningProjectIdentifier) { + return owningProjectIdentifier(Output.of(owningProjectIdentifier)); + } + + /** + * @param status Status of business glossary. Valid values are DISABLED and ENABLED. + * + * @return builder + * + */ + public Builder status(@Nullable Output status) { + $.status = status; + return this; + } + + /** + * @param status Status of business glossary. Valid values are DISABLED and ENABLED. + * + * @return builder + * + */ + public Builder status(String status) { + return status(Output.of(status)); + } + + public GlossaryArgs build() { + if ($.domainIdentifier == null) { + throw new MissingRequiredPropertyException("GlossaryArgs", "domainIdentifier"); + } + if ($.owningProjectIdentifier == null) { + throw new MissingRequiredPropertyException("GlossaryArgs", "owningProjectIdentifier"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/datazone/inputs/GlossaryState.java b/sdk/java/src/main/java/com/pulumi/aws/datazone/inputs/GlossaryState.java new file mode 100644 index 00000000000..1f586e9f2fe --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/datazone/inputs/GlossaryState.java @@ -0,0 +1,219 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.datazone.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class GlossaryState extends com.pulumi.resources.ResourceArgs { + + public static final GlossaryState Empty = new GlossaryState(); + + /** + * Description of the glossary. Must have a length between 0 and 4096. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return Description of the glossary. Must have a length between 0 and 4096. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + @Import(name="domainIdentifier") + private @Nullable Output domainIdentifier; + + public Optional> domainIdentifier() { + return Optional.ofNullable(this.domainIdentifier); + } + + /** + * Name of the glossary. Must have length between 1 and 256. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Name of the glossary. Must have length between 1 and 256. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + * + * The following arguments are optional: + * + */ + @Import(name="owningProjectIdentifier") + private @Nullable Output owningProjectIdentifier; + + /** + * @return ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + * + * The following arguments are optional: + * + */ + public Optional> owningProjectIdentifier() { + return Optional.ofNullable(this.owningProjectIdentifier); + } + + /** + * Status of business glossary. Valid values are DISABLED and ENABLED. + * + */ + @Import(name="status") + private @Nullable Output status; + + /** + * @return Status of business glossary. Valid values are DISABLED and ENABLED. + * + */ + public Optional> status() { + return Optional.ofNullable(this.status); + } + + private GlossaryState() {} + + private GlossaryState(GlossaryState $) { + this.description = $.description; + this.domainIdentifier = $.domainIdentifier; + this.name = $.name; + this.owningProjectIdentifier = $.owningProjectIdentifier; + this.status = $.status; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GlossaryState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GlossaryState $; + + public Builder() { + $ = new GlossaryState(); + } + + public Builder(GlossaryState defaults) { + $ = new GlossaryState(Objects.requireNonNull(defaults)); + } + + /** + * @param description Description of the glossary. Must have a length between 0 and 4096. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description Description of the glossary. Must have a length between 0 and 4096. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + public Builder domainIdentifier(@Nullable Output domainIdentifier) { + $.domainIdentifier = domainIdentifier; + return this; + } + + public Builder domainIdentifier(String domainIdentifier) { + return domainIdentifier(Output.of(domainIdentifier)); + } + + /** + * @param name Name of the glossary. Must have length between 1 and 256. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Name of the glossary. Must have length between 1 and 256. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param owningProjectIdentifier ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder owningProjectIdentifier(@Nullable Output owningProjectIdentifier) { + $.owningProjectIdentifier = owningProjectIdentifier; + return this; + } + + /** + * @param owningProjectIdentifier ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder owningProjectIdentifier(String owningProjectIdentifier) { + return owningProjectIdentifier(Output.of(owningProjectIdentifier)); + } + + /** + * @param status Status of business glossary. Valid values are DISABLED and ENABLED. + * + * @return builder + * + */ + public Builder status(@Nullable Output status) { + $.status = status; + return this; + } + + /** + * @param status Status of business glossary. Valid values are DISABLED and ENABLED. + * + * @return builder + * + */ + public Builder status(String status) { + return status(Output.of(status)); + } + + public GlossaryState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/ec2/Vpc.java b/sdk/java/src/main/java/com/pulumi/aws/ec2/Vpc.java index 69fd0880067..160cc90173e 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ec2/Vpc.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ec2/Vpc.java @@ -411,14 +411,14 @@ public Output> ipv6IpamPoolId() { return Codegen.optional(this.ipv6IpamPoolId); } /** - * Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + * Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. * */ @Export(name="ipv6NetmaskLength", refs={Integer.class}, tree="[0]") private Output ipv6NetmaskLength; /** - * @return Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + * @return Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. * */ public Output> ipv6NetmaskLength() { diff --git a/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcArgs.java b/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcArgs.java index 6c9b7872323..aeb2de3ec79 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcArgs.java @@ -184,14 +184,14 @@ public Optional> ipv6IpamPoolId() { } /** - * Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + * Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. * */ @Import(name="ipv6NetmaskLength") private @Nullable Output ipv6NetmaskLength; /** - * @return Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + * @return Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. * */ public Optional> ipv6NetmaskLength() { @@ -481,7 +481,7 @@ public Builder ipv6IpamPoolId(String ipv6IpamPoolId) { } /** - * @param ipv6NetmaskLength Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + * @param ipv6NetmaskLength Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. * * @return builder * @@ -492,7 +492,7 @@ public Builder ipv6NetmaskLength(@Nullable Output ipv6NetmaskLength) { } /** - * @param ipv6NetmaskLength Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + * @param ipv6NetmaskLength Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcIpamPoolCidrAllocation.java b/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcIpamPoolCidrAllocation.java index d3c37680451..aa70c7b24cd 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcIpamPoolCidrAllocation.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcIpamPoolCidrAllocation.java @@ -234,14 +234,14 @@ public Output ipamPoolId() { * */ @Export(name="netmaskLength", refs={Integer.class}, tree="[0]") - private Output netmaskLength; + private Output netmaskLength; /** * @return The netmask length of the CIDR you would like to allocate to the IPAM pool. Valid Values: `0-128`. * */ - public Output> netmaskLength() { - return Codegen.optional(this.netmaskLength); + public Output netmaskLength() { + return this.netmaskLength; } /** * The ID of the resource. diff --git a/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcIpv6CidrBlockAssociation.java b/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcIpv6CidrBlockAssociation.java index 9ff96363574..625b2cc18ac 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcIpv6CidrBlockAssociation.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcIpv6CidrBlockAssociation.java @@ -10,6 +10,7 @@ import com.pulumi.core.annotations.Export; import com.pulumi.core.annotations.ResourceType; import com.pulumi.core.internal.Codegen; +import java.lang.Boolean; import java.lang.Integer; import java.lang.String; import java.util.Optional; @@ -74,47 +75,75 @@ @ResourceType(type="aws:ec2/vpcIpv6CidrBlockAssociation:VpcIpv6CidrBlockAssociation") public class VpcIpv6CidrBlockAssociation extends com.pulumi.resources.CustomResource { /** - * The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + * Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + * + */ + @Export(name="assignGeneratedIpv6CidrBlock", refs={Boolean.class}, tree="[0]") + private Output assignGeneratedIpv6CidrBlock; + + /** + * @return Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + * + */ + public Output assignGeneratedIpv6CidrBlock() { + return this.assignGeneratedIpv6CidrBlock; + } + /** + * The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. * */ @Export(name="ipv6CidrBlock", refs={String.class}, tree="[0]") private Output ipv6CidrBlock; /** - * @return The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + * @return The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. * */ public Output ipv6CidrBlock() { return this.ipv6CidrBlock; } /** - * The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + * - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * */ @Export(name="ipv6IpamPoolId", refs={String.class}, tree="[0]") - private Output ipv6IpamPoolId; + private Output ipv6IpamPoolId; /** - * @return The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + * @return - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * */ - public Output ipv6IpamPoolId() { - return this.ipv6IpamPoolId; + public Output> ipv6IpamPoolId() { + return Codegen.optional(this.ipv6IpamPoolId); } /** - * The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + * The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * */ @Export(name="ipv6NetmaskLength", refs={Integer.class}, tree="[0]") private Output ipv6NetmaskLength; /** - * @return The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + * @return The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * */ public Output> ipv6NetmaskLength() { return Codegen.optional(this.ipv6NetmaskLength); } + /** + * The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + * + */ + @Export(name="ipv6Pool", refs={String.class}, tree="[0]") + private Output ipv6Pool; + + /** + * @return The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + * + */ + public Output ipv6Pool() { + return this.ipv6Pool; + } /** * The ID of the VPC to make the association with. * diff --git a/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcIpv6CidrBlockAssociationArgs.java b/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcIpv6CidrBlockAssociationArgs.java index 61fab320b7a..61d4ee59244 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcIpv6CidrBlockAssociationArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ec2/VpcIpv6CidrBlockAssociationArgs.java @@ -6,6 +6,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; import java.lang.Integer; import java.lang.String; import java.util.Objects; @@ -18,14 +19,29 @@ public final class VpcIpv6CidrBlockAssociationArgs extends com.pulumi.resources. public static final VpcIpv6CidrBlockAssociationArgs Empty = new VpcIpv6CidrBlockAssociationArgs(); /** - * The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + * Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + * + */ + @Import(name="assignGeneratedIpv6CidrBlock") + private @Nullable Output assignGeneratedIpv6CidrBlock; + + /** + * @return Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + * + */ + public Optional> assignGeneratedIpv6CidrBlock() { + return Optional.ofNullable(this.assignGeneratedIpv6CidrBlock); + } + + /** + * The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. * */ @Import(name="ipv6CidrBlock") private @Nullable Output ipv6CidrBlock; /** - * @return The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + * @return The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. * */ public Optional> ipv6CidrBlock() { @@ -33,35 +49,50 @@ public Optional> ipv6CidrBlock() { } /** - * The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + * - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * */ - @Import(name="ipv6IpamPoolId", required=true) - private Output ipv6IpamPoolId; + @Import(name="ipv6IpamPoolId") + private @Nullable Output ipv6IpamPoolId; /** - * @return The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + * @return - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * */ - public Output ipv6IpamPoolId() { - return this.ipv6IpamPoolId; + public Optional> ipv6IpamPoolId() { + return Optional.ofNullable(this.ipv6IpamPoolId); } /** - * The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + * The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * */ @Import(name="ipv6NetmaskLength") private @Nullable Output ipv6NetmaskLength; /** - * @return The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + * @return The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * */ public Optional> ipv6NetmaskLength() { return Optional.ofNullable(this.ipv6NetmaskLength); } + /** + * The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + * + */ + @Import(name="ipv6Pool") + private @Nullable Output ipv6Pool; + + /** + * @return The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + * + */ + public Optional> ipv6Pool() { + return Optional.ofNullable(this.ipv6Pool); + } + /** * The ID of the VPC to make the association with. * @@ -80,9 +111,11 @@ public Output vpcId() { private VpcIpv6CidrBlockAssociationArgs() {} private VpcIpv6CidrBlockAssociationArgs(VpcIpv6CidrBlockAssociationArgs $) { + this.assignGeneratedIpv6CidrBlock = $.assignGeneratedIpv6CidrBlock; this.ipv6CidrBlock = $.ipv6CidrBlock; this.ipv6IpamPoolId = $.ipv6IpamPoolId; this.ipv6NetmaskLength = $.ipv6NetmaskLength; + this.ipv6Pool = $.ipv6Pool; this.vpcId = $.vpcId; } @@ -105,7 +138,28 @@ public Builder(VpcIpv6CidrBlockAssociationArgs defaults) { } /** - * @param ipv6CidrBlock The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + * @param assignGeneratedIpv6CidrBlock Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + * + * @return builder + * + */ + public Builder assignGeneratedIpv6CidrBlock(@Nullable Output assignGeneratedIpv6CidrBlock) { + $.assignGeneratedIpv6CidrBlock = assignGeneratedIpv6CidrBlock; + return this; + } + + /** + * @param assignGeneratedIpv6CidrBlock Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + * + * @return builder + * + */ + public Builder assignGeneratedIpv6CidrBlock(Boolean assignGeneratedIpv6CidrBlock) { + return assignGeneratedIpv6CidrBlock(Output.of(assignGeneratedIpv6CidrBlock)); + } + + /** + * @param ipv6CidrBlock The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. * * @return builder * @@ -116,7 +170,7 @@ public Builder ipv6CidrBlock(@Nullable Output ipv6CidrBlock) { } /** - * @param ipv6CidrBlock The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + * @param ipv6CidrBlock The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. * * @return builder * @@ -126,18 +180,18 @@ public Builder ipv6CidrBlock(String ipv6CidrBlock) { } /** - * @param ipv6IpamPoolId The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + * @param ipv6IpamPoolId - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * * @return builder * */ - public Builder ipv6IpamPoolId(Output ipv6IpamPoolId) { + public Builder ipv6IpamPoolId(@Nullable Output ipv6IpamPoolId) { $.ipv6IpamPoolId = ipv6IpamPoolId; return this; } /** - * @param ipv6IpamPoolId The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + * @param ipv6IpamPoolId - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * * @return builder * @@ -147,7 +201,7 @@ public Builder ipv6IpamPoolId(String ipv6IpamPoolId) { } /** - * @param ipv6NetmaskLength The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + * @param ipv6NetmaskLength The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * * @return builder * @@ -158,7 +212,7 @@ public Builder ipv6NetmaskLength(@Nullable Output ipv6NetmaskLength) { } /** - * @param ipv6NetmaskLength The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + * @param ipv6NetmaskLength The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * * @return builder * @@ -167,6 +221,27 @@ public Builder ipv6NetmaskLength(Integer ipv6NetmaskLength) { return ipv6NetmaskLength(Output.of(ipv6NetmaskLength)); } + /** + * @param ipv6Pool The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + * + * @return builder + * + */ + public Builder ipv6Pool(@Nullable Output ipv6Pool) { + $.ipv6Pool = ipv6Pool; + return this; + } + + /** + * @param ipv6Pool The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + * + * @return builder + * + */ + public Builder ipv6Pool(String ipv6Pool) { + return ipv6Pool(Output.of(ipv6Pool)); + } + /** * @param vpcId The ID of the VPC to make the association with. * @@ -189,9 +264,6 @@ public Builder vpcId(String vpcId) { } public VpcIpv6CidrBlockAssociationArgs build() { - if ($.ipv6IpamPoolId == null) { - throw new MissingRequiredPropertyException("VpcIpv6CidrBlockAssociationArgs", "ipv6IpamPoolId"); - } if ($.vpcId == null) { throw new MissingRequiredPropertyException("VpcIpv6CidrBlockAssociationArgs", "vpcId"); } diff --git a/sdk/java/src/main/java/com/pulumi/aws/ec2/inputs/InstanceInstanceMarketOptionsArgs.java b/sdk/java/src/main/java/com/pulumi/aws/ec2/inputs/InstanceInstanceMarketOptionsArgs.java index 013acef2754..ba808bde56c 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ec2/inputs/InstanceInstanceMarketOptionsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ec2/inputs/InstanceInstanceMarketOptionsArgs.java @@ -17,14 +17,14 @@ public final class InstanceInstanceMarketOptionsArgs extends com.pulumi.resource public static final InstanceInstanceMarketOptionsArgs Empty = new InstanceInstanceMarketOptionsArgs(); /** - * Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + * Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. * */ @Import(name="marketType") private @Nullable Output marketType; /** - * @return Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + * @return Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. * */ public Optional> marketType() { @@ -72,7 +72,7 @@ public Builder(InstanceInstanceMarketOptionsArgs defaults) { } /** - * @param marketType Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + * @param marketType Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. * * @return builder * @@ -83,7 +83,7 @@ public Builder marketType(@Nullable Output marketType) { } /** - * @param marketType Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + * @param marketType Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/aws/ec2/inputs/VpcIpv6CidrBlockAssociationState.java b/sdk/java/src/main/java/com/pulumi/aws/ec2/inputs/VpcIpv6CidrBlockAssociationState.java index 35263a8da0a..155a247605b 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ec2/inputs/VpcIpv6CidrBlockAssociationState.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ec2/inputs/VpcIpv6CidrBlockAssociationState.java @@ -5,6 +5,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import java.lang.Boolean; import java.lang.Integer; import java.lang.String; import java.util.Objects; @@ -17,14 +18,29 @@ public final class VpcIpv6CidrBlockAssociationState extends com.pulumi.resources public static final VpcIpv6CidrBlockAssociationState Empty = new VpcIpv6CidrBlockAssociationState(); /** - * The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + * Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + * + */ + @Import(name="assignGeneratedIpv6CidrBlock") + private @Nullable Output assignGeneratedIpv6CidrBlock; + + /** + * @return Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + * + */ + public Optional> assignGeneratedIpv6CidrBlock() { + return Optional.ofNullable(this.assignGeneratedIpv6CidrBlock); + } + + /** + * The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. * */ @Import(name="ipv6CidrBlock") private @Nullable Output ipv6CidrBlock; /** - * @return The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + * @return The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. * */ public Optional> ipv6CidrBlock() { @@ -32,14 +48,14 @@ public Optional> ipv6CidrBlock() { } /** - * The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + * - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * */ @Import(name="ipv6IpamPoolId") private @Nullable Output ipv6IpamPoolId; /** - * @return The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + * @return - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * */ public Optional> ipv6IpamPoolId() { @@ -47,20 +63,35 @@ public Optional> ipv6IpamPoolId() { } /** - * The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + * The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * */ @Import(name="ipv6NetmaskLength") private @Nullable Output ipv6NetmaskLength; /** - * @return The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + * @return The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * */ public Optional> ipv6NetmaskLength() { return Optional.ofNullable(this.ipv6NetmaskLength); } + /** + * The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + * + */ + @Import(name="ipv6Pool") + private @Nullable Output ipv6Pool; + + /** + * @return The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + * + */ + public Optional> ipv6Pool() { + return Optional.ofNullable(this.ipv6Pool); + } + /** * The ID of the VPC to make the association with. * @@ -79,9 +110,11 @@ public Optional> vpcId() { private VpcIpv6CidrBlockAssociationState() {} private VpcIpv6CidrBlockAssociationState(VpcIpv6CidrBlockAssociationState $) { + this.assignGeneratedIpv6CidrBlock = $.assignGeneratedIpv6CidrBlock; this.ipv6CidrBlock = $.ipv6CidrBlock; this.ipv6IpamPoolId = $.ipv6IpamPoolId; this.ipv6NetmaskLength = $.ipv6NetmaskLength; + this.ipv6Pool = $.ipv6Pool; this.vpcId = $.vpcId; } @@ -104,7 +137,28 @@ public Builder(VpcIpv6CidrBlockAssociationState defaults) { } /** - * @param ipv6CidrBlock The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + * @param assignGeneratedIpv6CidrBlock Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + * + * @return builder + * + */ + public Builder assignGeneratedIpv6CidrBlock(@Nullable Output assignGeneratedIpv6CidrBlock) { + $.assignGeneratedIpv6CidrBlock = assignGeneratedIpv6CidrBlock; + return this; + } + + /** + * @param assignGeneratedIpv6CidrBlock Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + * + * @return builder + * + */ + public Builder assignGeneratedIpv6CidrBlock(Boolean assignGeneratedIpv6CidrBlock) { + return assignGeneratedIpv6CidrBlock(Output.of(assignGeneratedIpv6CidrBlock)); + } + + /** + * @param ipv6CidrBlock The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. * * @return builder * @@ -115,7 +169,7 @@ public Builder ipv6CidrBlock(@Nullable Output ipv6CidrBlock) { } /** - * @param ipv6CidrBlock The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + * @param ipv6CidrBlock The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. * * @return builder * @@ -125,7 +179,7 @@ public Builder ipv6CidrBlock(String ipv6CidrBlock) { } /** - * @param ipv6IpamPoolId The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + * @param ipv6IpamPoolId - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * * @return builder * @@ -136,7 +190,7 @@ public Builder ipv6IpamPoolId(@Nullable Output ipv6IpamPoolId) { } /** - * @param ipv6IpamPoolId The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + * @param ipv6IpamPoolId - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * * @return builder * @@ -146,7 +200,7 @@ public Builder ipv6IpamPoolId(String ipv6IpamPoolId) { } /** - * @param ipv6NetmaskLength The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + * @param ipv6NetmaskLength The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * * @return builder * @@ -157,7 +211,7 @@ public Builder ipv6NetmaskLength(@Nullable Output ipv6NetmaskLength) { } /** - * @param ipv6NetmaskLength The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + * @param ipv6NetmaskLength The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. * * @return builder * @@ -166,6 +220,27 @@ public Builder ipv6NetmaskLength(Integer ipv6NetmaskLength) { return ipv6NetmaskLength(Output.of(ipv6NetmaskLength)); } + /** + * @param ipv6Pool The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + * + * @return builder + * + */ + public Builder ipv6Pool(@Nullable Output ipv6Pool) { + $.ipv6Pool = ipv6Pool; + return this; + } + + /** + * @param ipv6Pool The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + * + * @return builder + * + */ + public Builder ipv6Pool(String ipv6Pool) { + return ipv6Pool(Output.of(ipv6Pool)); + } + /** * @param vpcId The ID of the VPC to make the association with. * diff --git a/sdk/java/src/main/java/com/pulumi/aws/ec2/inputs/VpcState.java b/sdk/java/src/main/java/com/pulumi/aws/ec2/inputs/VpcState.java index 323072e6c99..2534be3bc2d 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ec2/inputs/VpcState.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ec2/inputs/VpcState.java @@ -274,14 +274,14 @@ public Optional> ipv6IpamPoolId() { } /** - * Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + * Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. * */ @Import(name="ipv6NetmaskLength") private @Nullable Output ipv6NetmaskLength; /** - * @return Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + * @return Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. * */ public Optional> ipv6NetmaskLength() { @@ -763,7 +763,7 @@ public Builder ipv6IpamPoolId(String ipv6IpamPoolId) { } /** - * @param ipv6NetmaskLength Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + * @param ipv6NetmaskLength Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. * * @return builder * @@ -774,7 +774,7 @@ public Builder ipv6NetmaskLength(@Nullable Output ipv6NetmaskLength) { } /** - * @param ipv6NetmaskLength Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + * @param ipv6NetmaskLength Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/aws/ec2/outputs/InstanceInstanceMarketOptions.java b/sdk/java/src/main/java/com/pulumi/aws/ec2/outputs/InstanceInstanceMarketOptions.java index c591cc31bf9..38506f5dd50 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ec2/outputs/InstanceInstanceMarketOptions.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ec2/outputs/InstanceInstanceMarketOptions.java @@ -13,7 +13,7 @@ @CustomType public final class InstanceInstanceMarketOptions { /** - * @return Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + * @return Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. * */ private @Nullable String marketType; @@ -25,7 +25,7 @@ public final class InstanceInstanceMarketOptions { private InstanceInstanceMarketOptions() {} /** - * @return Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + * @return Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. * */ public Optional marketType() { diff --git a/sdk/java/src/main/java/com/pulumi/aws/ecr/EcrFunctions.java b/sdk/java/src/main/java/com/pulumi/aws/ecr/EcrFunctions.java index aebd2ef0488..304494eb635 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/ecr/EcrFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/aws/ecr/EcrFunctions.java @@ -15,6 +15,8 @@ import com.pulumi.aws.ecr.inputs.GetPullThroughCacheRuleArgs; import com.pulumi.aws.ecr.inputs.GetPullThroughCacheRulePlainArgs; import com.pulumi.aws.ecr.inputs.GetRepositoryArgs; +import com.pulumi.aws.ecr.inputs.GetRepositoryCreationTemplateArgs; +import com.pulumi.aws.ecr.inputs.GetRepositoryCreationTemplatePlainArgs; import com.pulumi.aws.ecr.inputs.GetRepositoryPlainArgs; import com.pulumi.aws.ecr.outputs.GetAuthorizationTokenResult; import com.pulumi.aws.ecr.outputs.GetCredentialsResult; @@ -22,6 +24,7 @@ import com.pulumi.aws.ecr.outputs.GetLifecyclePolicyDocumentResult; import com.pulumi.aws.ecr.outputs.GetPullThroughCacheRuleResult; import com.pulumi.aws.ecr.outputs.GetRepositoriesResult; +import com.pulumi.aws.ecr.outputs.GetRepositoryCreationTemplateResult; import com.pulumi.aws.ecr.outputs.GetRepositoryResult; import com.pulumi.core.Output; import com.pulumi.core.TypeShape; @@ -1397,4 +1400,172 @@ public static Output getRepository(GetRepositoryArgs args, public static CompletableFuture getRepositoryPlain(GetRepositoryPlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("aws:ecr/getRepository:getRepository", TypeShape.of(GetRepositoryResult.class), args, Utilities.withVersion(options)); } + /** + * The ECR Repository Creation Template data source allows the template details to be retrieved for a Repository Creation Template. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.ecr.EcrFunctions;
+     * import com.pulumi.aws.ecr.inputs.GetRepositoryCreationTemplateArgs;
+     * 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 = EcrFunctions.getRepositoryCreationTemplate(GetRepositoryCreationTemplateArgs.builder()
+     *             .prefix("example")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static Output getRepositoryCreationTemplate(GetRepositoryCreationTemplateArgs args) { + return getRepositoryCreationTemplate(args, InvokeOptions.Empty); + } + /** + * The ECR Repository Creation Template data source allows the template details to be retrieved for a Repository Creation Template. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.ecr.EcrFunctions;
+     * import com.pulumi.aws.ecr.inputs.GetRepositoryCreationTemplateArgs;
+     * 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 = EcrFunctions.getRepositoryCreationTemplate(GetRepositoryCreationTemplateArgs.builder()
+     *             .prefix("example")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static CompletableFuture getRepositoryCreationTemplatePlain(GetRepositoryCreationTemplatePlainArgs args) { + return getRepositoryCreationTemplatePlain(args, InvokeOptions.Empty); + } + /** + * The ECR Repository Creation Template data source allows the template details to be retrieved for a Repository Creation Template. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.ecr.EcrFunctions;
+     * import com.pulumi.aws.ecr.inputs.GetRepositoryCreationTemplateArgs;
+     * 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 = EcrFunctions.getRepositoryCreationTemplate(GetRepositoryCreationTemplateArgs.builder()
+     *             .prefix("example")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static Output getRepositoryCreationTemplate(GetRepositoryCreationTemplateArgs args, InvokeOptions options) { + return Deployment.getInstance().invoke("aws:ecr/getRepositoryCreationTemplate:getRepositoryCreationTemplate", TypeShape.of(GetRepositoryCreationTemplateResult.class), args, Utilities.withVersion(options)); + } + /** + * The ECR Repository Creation Template data source allows the template details to be retrieved for a Repository Creation Template. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.aws.ecr.EcrFunctions;
+     * import com.pulumi.aws.ecr.inputs.GetRepositoryCreationTemplateArgs;
+     * 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 = EcrFunctions.getRepositoryCreationTemplate(GetRepositoryCreationTemplateArgs.builder()
+     *             .prefix("example")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static CompletableFuture getRepositoryCreationTemplatePlain(GetRepositoryCreationTemplatePlainArgs args, InvokeOptions options) { + return Deployment.getInstance().invokeAsync("aws:ecr/getRepositoryCreationTemplate:getRepositoryCreationTemplate", TypeShape.of(GetRepositoryCreationTemplateResult.class), args, Utilities.withVersion(options)); + } } 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 new file mode 100644 index 00000000000..2715b5338cf --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/ecr/RepositoryCreationTemplate.java @@ -0,0 +1,307 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.ecr; + +import com.pulumi.aws.Utilities; +import com.pulumi.aws.ecr.RepositoryCreationTemplateArgs; +import com.pulumi.aws.ecr.inputs.RepositoryCreationTemplateState; +import com.pulumi.aws.ecr.outputs.RepositoryCreationTemplateEncryptionConfiguration; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * Provides an Elastic Container Registry Repository Creation Template. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.iam.IamFunctions;
+ * import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
+ * import com.pulumi.aws.ecr.RepositoryCreationTemplate;
+ * import com.pulumi.aws.ecr.RepositoryCreationTemplateArgs;
+ * import com.pulumi.aws.ecr.inputs.RepositoryCreationTemplateEncryptionConfigurationArgs;
+ * 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 = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
+ *             .statements(GetPolicyDocumentStatementArgs.builder()
+ *                 .sid("new policy")
+ *                 .effect("Allow")
+ *                 .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
+ *                     .type("AWS")
+ *                     .identifiers("123456789012")
+ *                     .build())
+ *                 .actions(                
+ *                     "ecr:GetDownloadUrlForLayer",
+ *                     "ecr:BatchGetImage",
+ *                     "ecr:BatchCheckLayerAvailability",
+ *                     "ecr:PutImage",
+ *                     "ecr:InitiateLayerUpload",
+ *                     "ecr:UploadLayerPart",
+ *                     "ecr:CompleteLayerUpload",
+ *                     "ecr:DescribeRepositories",
+ *                     "ecr:GetRepositoryPolicy",
+ *                     "ecr:ListImages",
+ *                     "ecr:DeleteRepository",
+ *                     "ecr:BatchDeleteImage",
+ *                     "ecr:SetRepositoryPolicy",
+ *                     "ecr:DeleteRepositoryPolicy")
+ *                 .build())
+ *             .build());
+ * 
+ *         var exampleRepositoryCreationTemplate = new RepositoryCreationTemplate("exampleRepositoryCreationTemplate", RepositoryCreationTemplateArgs.builder()
+ *             .prefix("example")
+ *             .description("An example template")
+ *             .imageTagMutability("IMMUTABLE")
+ *             .customRoleArn("arn:aws:iam::123456789012:role/example")
+ *             .appliedFors("PULL_THROUGH_CACHE")
+ *             .encryptionConfigurations(RepositoryCreationTemplateEncryptionConfigurationArgs.builder()
+ *                 .encryptionType("AES256")
+ *                 .build())
+ *             .repositoryPolicy(example.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult.json()))
+ *             .lifecyclePolicy("""
+ * {
+ *   "rules": [
+ *     {
+ *       "rulePriority": 1,
+ *       "description": "Expire images older than 14 days",
+ *       "selection": {
+ *         "tagStatus": "untagged",
+ *         "countType": "sinceImagePushed",
+ *         "countUnit": "days",
+ *         "countNumber": 14
+ *       },
+ *       "action": {
+ *         "type": "expire"
+ *       }
+ *     }
+ *   ]
+ * }
+ *             """)
+ *             .resourceTags(Map.of("Foo", "Bar"))
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * Using `pulumi import`, import the ECR Repository Creating Templates using the `prefix`. For example: + * + * ```sh + * $ pulumi import aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate example example + * ``` + * + */ +@ResourceType(type="aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate") +public class RepositoryCreationTemplate extends com.pulumi.resources.CustomResource { + /** + * Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + */ + @Export(name="appliedFors", refs={List.class,String.class}, tree="[0,1]") + private Output> appliedFors; + + /** + * @return Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + */ + public Output> appliedFors() { + return this.appliedFors; + } + /** + * A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + * + */ + @Export(name="customRoleArn", refs={String.class}, tree="[0]") + private Output customRoleArn; + + /** + * @return A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + * + */ + public Output> customRoleArn() { + return Codegen.optional(this.customRoleArn); + } + /** + * The description for this template. + * + */ + @Export(name="description", refs={String.class}, tree="[0]") + private Output description; + + /** + * @return The description for this template. + * + */ + public Output> description() { + return Codegen.optional(this.description); + } + /** + * Encryption configuration for any created repositories. See below for schema. + * + */ + @Export(name="encryptionConfigurations", refs={List.class,RepositoryCreationTemplateEncryptionConfiguration.class}, tree="[0,1]") + private Output> encryptionConfigurations; + + /** + * @return Encryption configuration for any created repositories. See below for schema. + * + */ + public Output>> encryptionConfigurations() { + return Codegen.optional(this.encryptionConfigurations); + } + /** + * The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + * + */ + @Export(name="imageTagMutability", refs={String.class}, tree="[0]") + private Output imageTagMutability; + + /** + * @return The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + * + */ + public Output> imageTagMutability() { + return Codegen.optional(this.imageTagMutability); + } + /** + * The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + * + */ + @Export(name="lifecyclePolicy", refs={String.class}, tree="[0]") + private Output lifecyclePolicy; + + /** + * @return The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + * + */ + public Output> lifecyclePolicy() { + return Codegen.optional(this.lifecyclePolicy); + } + /** + * The repository name prefix to match against. + * + */ + @Export(name="prefix", refs={String.class}, tree="[0]") + private Output prefix; + + /** + * @return The repository name prefix to match against. + * + */ + public Output prefix() { + return this.prefix; + } + /** + * The registry ID the repository creation template applies to. + * + */ + @Export(name="registryId", refs={String.class}, tree="[0]") + private Output registryId; + + /** + * @return The registry ID the repository creation template applies to. + * + */ + public Output registryId() { + return this.registryId; + } + @Export(name="repositoryPolicy", refs={String.class}, tree="[0]") + private Output repositoryPolicy; + + public Output> repositoryPolicy() { + return Codegen.optional(this.repositoryPolicy); + } + /** + * A map of tags to assign to any created repositories. + * + */ + @Export(name="resourceTags", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> resourceTags; + + /** + * @return A map of tags to assign to any created repositories. + * + */ + public Output>> resourceTags() { + return Codegen.optional(this.resourceTags); + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public RepositoryCreationTemplate(String name) { + this(name, RepositoryCreationTemplateArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public RepositoryCreationTemplate(String name, RepositoryCreationTemplateArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public RepositoryCreationTemplate(String name, RepositoryCreationTemplateArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate", name, args == null ? RepositoryCreationTemplateArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private RepositoryCreationTemplate(String name, Output id, @Nullable RepositoryCreationTemplateState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static RepositoryCreationTemplate get(String name, Output id, @Nullable RepositoryCreationTemplateState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new RepositoryCreationTemplate(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/ecr/RepositoryCreationTemplateArgs.java b/sdk/java/src/main/java/com/pulumi/aws/ecr/RepositoryCreationTemplateArgs.java new file mode 100644 index 00000000000..490e10ab48f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/ecr/RepositoryCreationTemplateArgs.java @@ -0,0 +1,389 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.ecr; + +import com.pulumi.aws.ecr.inputs.RepositoryCreationTemplateEncryptionConfigurationArgs; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RepositoryCreationTemplateArgs extends com.pulumi.resources.ResourceArgs { + + public static final RepositoryCreationTemplateArgs Empty = new RepositoryCreationTemplateArgs(); + + /** + * Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + */ + @Import(name="appliedFors", required=true) + private Output> appliedFors; + + /** + * @return Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + */ + public Output> appliedFors() { + return this.appliedFors; + } + + /** + * A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + * + */ + @Import(name="customRoleArn") + private @Nullable Output customRoleArn; + + /** + * @return A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + * + */ + public Optional> customRoleArn() { + return Optional.ofNullable(this.customRoleArn); + } + + /** + * The description for this template. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return The description for this template. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * Encryption configuration for any created repositories. See below for schema. + * + */ + @Import(name="encryptionConfigurations") + private @Nullable Output> encryptionConfigurations; + + /** + * @return Encryption configuration for any created repositories. See below for schema. + * + */ + public Optional>> encryptionConfigurations() { + return Optional.ofNullable(this.encryptionConfigurations); + } + + /** + * The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + * + */ + @Import(name="imageTagMutability") + private @Nullable Output imageTagMutability; + + /** + * @return The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + * + */ + public Optional> imageTagMutability() { + return Optional.ofNullable(this.imageTagMutability); + } + + /** + * The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + * + */ + @Import(name="lifecyclePolicy") + private @Nullable Output lifecyclePolicy; + + /** + * @return The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + * + */ + public Optional> lifecyclePolicy() { + return Optional.ofNullable(this.lifecyclePolicy); + } + + /** + * The repository name prefix to match against. + * + */ + @Import(name="prefix", required=true) + private Output prefix; + + /** + * @return The repository name prefix to match against. + * + */ + public Output prefix() { + return this.prefix; + } + + @Import(name="repositoryPolicy") + private @Nullable Output repositoryPolicy; + + public Optional> repositoryPolicy() { + return Optional.ofNullable(this.repositoryPolicy); + } + + /** + * A map of tags to assign to any created repositories. + * + */ + @Import(name="resourceTags") + private @Nullable Output> resourceTags; + + /** + * @return A map of tags to assign to any created repositories. + * + */ + public Optional>> resourceTags() { + return Optional.ofNullable(this.resourceTags); + } + + private RepositoryCreationTemplateArgs() {} + + private RepositoryCreationTemplateArgs(RepositoryCreationTemplateArgs $) { + this.appliedFors = $.appliedFors; + this.customRoleArn = $.customRoleArn; + this.description = $.description; + this.encryptionConfigurations = $.encryptionConfigurations; + this.imageTagMutability = $.imageTagMutability; + this.lifecyclePolicy = $.lifecyclePolicy; + this.prefix = $.prefix; + this.repositoryPolicy = $.repositoryPolicy; + this.resourceTags = $.resourceTags; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RepositoryCreationTemplateArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RepositoryCreationTemplateArgs $; + + public Builder() { + $ = new RepositoryCreationTemplateArgs(); + } + + public Builder(RepositoryCreationTemplateArgs defaults) { + $ = new RepositoryCreationTemplateArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param appliedFors Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + * @return builder + * + */ + public Builder appliedFors(Output> appliedFors) { + $.appliedFors = appliedFors; + return this; + } + + /** + * @param appliedFors Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + * @return builder + * + */ + public Builder appliedFors(List appliedFors) { + return appliedFors(Output.of(appliedFors)); + } + + /** + * @param appliedFors Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + * @return builder + * + */ + public Builder appliedFors(String... appliedFors) { + return appliedFors(List.of(appliedFors)); + } + + /** + * @param customRoleArn A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + * + * @return builder + * + */ + public Builder customRoleArn(@Nullable Output customRoleArn) { + $.customRoleArn = customRoleArn; + return this; + } + + /** + * @param customRoleArn A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + * + * @return builder + * + */ + public Builder customRoleArn(String customRoleArn) { + return customRoleArn(Output.of(customRoleArn)); + } + + /** + * @param description The description for this template. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description The description for this template. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param encryptionConfigurations Encryption configuration for any created repositories. See below for schema. + * + * @return builder + * + */ + public Builder encryptionConfigurations(@Nullable Output> encryptionConfigurations) { + $.encryptionConfigurations = encryptionConfigurations; + return this; + } + + /** + * @param encryptionConfigurations Encryption configuration for any created repositories. See below for schema. + * + * @return builder + * + */ + public Builder encryptionConfigurations(List encryptionConfigurations) { + return encryptionConfigurations(Output.of(encryptionConfigurations)); + } + + /** + * @param encryptionConfigurations Encryption configuration for any created repositories. See below for schema. + * + * @return builder + * + */ + public Builder encryptionConfigurations(RepositoryCreationTemplateEncryptionConfigurationArgs... encryptionConfigurations) { + return encryptionConfigurations(List.of(encryptionConfigurations)); + } + + /** + * @param imageTagMutability The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + * + * @return builder + * + */ + public Builder imageTagMutability(@Nullable Output imageTagMutability) { + $.imageTagMutability = imageTagMutability; + return this; + } + + /** + * @param imageTagMutability The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + * + * @return builder + * + */ + public Builder imageTagMutability(String imageTagMutability) { + return imageTagMutability(Output.of(imageTagMutability)); + } + + /** + * @param lifecyclePolicy The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + * + * @return builder + * + */ + public Builder lifecyclePolicy(@Nullable Output lifecyclePolicy) { + $.lifecyclePolicy = lifecyclePolicy; + return this; + } + + /** + * @param lifecyclePolicy The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + * + * @return builder + * + */ + public Builder lifecyclePolicy(String lifecyclePolicy) { + return lifecyclePolicy(Output.of(lifecyclePolicy)); + } + + /** + * @param prefix The repository name prefix to match against. + * + * @return builder + * + */ + public Builder prefix(Output prefix) { + $.prefix = prefix; + return this; + } + + /** + * @param prefix The repository name prefix to match against. + * + * @return builder + * + */ + public Builder prefix(String prefix) { + return prefix(Output.of(prefix)); + } + + public Builder repositoryPolicy(@Nullable Output repositoryPolicy) { + $.repositoryPolicy = repositoryPolicy; + return this; + } + + public Builder repositoryPolicy(String repositoryPolicy) { + return repositoryPolicy(Output.of(repositoryPolicy)); + } + + /** + * @param resourceTags A map of tags to assign to any created repositories. + * + * @return builder + * + */ + public Builder resourceTags(@Nullable Output> resourceTags) { + $.resourceTags = resourceTags; + return this; + } + + /** + * @param resourceTags A map of tags to assign to any created repositories. + * + * @return builder + * + */ + public Builder resourceTags(Map resourceTags) { + return resourceTags(Output.of(resourceTags)); + } + + public RepositoryCreationTemplateArgs build() { + if ($.appliedFors == null) { + throw new MissingRequiredPropertyException("RepositoryCreationTemplateArgs", "appliedFors"); + } + if ($.prefix == null) { + throw new MissingRequiredPropertyException("RepositoryCreationTemplateArgs", "prefix"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/GetRepositoryCreationTemplateArgs.java b/sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/GetRepositoryCreationTemplateArgs.java new file mode 100644 index 00000000000..f9c14f8ca6e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/GetRepositoryCreationTemplateArgs.java @@ -0,0 +1,125 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.ecr.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class GetRepositoryCreationTemplateArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetRepositoryCreationTemplateArgs Empty = new GetRepositoryCreationTemplateArgs(); + + /** + * The repository name prefix that the template matches against. + * + */ + @Import(name="prefix", required=true) + private Output prefix; + + /** + * @return The repository name prefix that the template matches against. + * + */ + public Output prefix() { + return this.prefix; + } + + /** + * A map of tags to assign to any created repositories. + * + */ + @Import(name="resourceTags") + private @Nullable Output> resourceTags; + + /** + * @return A map of tags to assign to any created repositories. + * + */ + public Optional>> resourceTags() { + return Optional.ofNullable(this.resourceTags); + } + + private GetRepositoryCreationTemplateArgs() {} + + private GetRepositoryCreationTemplateArgs(GetRepositoryCreationTemplateArgs $) { + this.prefix = $.prefix; + this.resourceTags = $.resourceTags; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetRepositoryCreationTemplateArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetRepositoryCreationTemplateArgs $; + + public Builder() { + $ = new GetRepositoryCreationTemplateArgs(); + } + + public Builder(GetRepositoryCreationTemplateArgs defaults) { + $ = new GetRepositoryCreationTemplateArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param prefix The repository name prefix that the template matches against. + * + * @return builder + * + */ + public Builder prefix(Output prefix) { + $.prefix = prefix; + return this; + } + + /** + * @param prefix The repository name prefix that the template matches against. + * + * @return builder + * + */ + public Builder prefix(String prefix) { + return prefix(Output.of(prefix)); + } + + /** + * @param resourceTags A map of tags to assign to any created repositories. + * + * @return builder + * + */ + public Builder resourceTags(@Nullable Output> resourceTags) { + $.resourceTags = resourceTags; + return this; + } + + /** + * @param resourceTags A map of tags to assign to any created repositories. + * + * @return builder + * + */ + public Builder resourceTags(Map resourceTags) { + return resourceTags(Output.of(resourceTags)); + } + + public GetRepositoryCreationTemplateArgs build() { + if ($.prefix == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateArgs", "prefix"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/GetRepositoryCreationTemplatePlainArgs.java b/sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/GetRepositoryCreationTemplatePlainArgs.java new file mode 100644 index 00000000000..f5d55780dbe --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/GetRepositoryCreationTemplatePlainArgs.java @@ -0,0 +1,104 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.ecr.inputs; + +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class GetRepositoryCreationTemplatePlainArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetRepositoryCreationTemplatePlainArgs Empty = new GetRepositoryCreationTemplatePlainArgs(); + + /** + * The repository name prefix that the template matches against. + * + */ + @Import(name="prefix", required=true) + private String prefix; + + /** + * @return The repository name prefix that the template matches against. + * + */ + public String prefix() { + return this.prefix; + } + + /** + * A map of tags to assign to any created repositories. + * + */ + @Import(name="resourceTags") + private @Nullable Map resourceTags; + + /** + * @return A map of tags to assign to any created repositories. + * + */ + public Optional> resourceTags() { + return Optional.ofNullable(this.resourceTags); + } + + private GetRepositoryCreationTemplatePlainArgs() {} + + private GetRepositoryCreationTemplatePlainArgs(GetRepositoryCreationTemplatePlainArgs $) { + this.prefix = $.prefix; + this.resourceTags = $.resourceTags; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetRepositoryCreationTemplatePlainArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetRepositoryCreationTemplatePlainArgs $; + + public Builder() { + $ = new GetRepositoryCreationTemplatePlainArgs(); + } + + public Builder(GetRepositoryCreationTemplatePlainArgs defaults) { + $ = new GetRepositoryCreationTemplatePlainArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param prefix The repository name prefix that the template matches against. + * + * @return builder + * + */ + public Builder prefix(String prefix) { + $.prefix = prefix; + return this; + } + + /** + * @param resourceTags A map of tags to assign to any created repositories. + * + * @return builder + * + */ + public Builder resourceTags(@Nullable Map resourceTags) { + $.resourceTags = resourceTags; + return this; + } + + public GetRepositoryCreationTemplatePlainArgs build() { + if ($.prefix == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplatePlainArgs", "prefix"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/RepositoryCreationTemplateEncryptionConfigurationArgs.java b/sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/RepositoryCreationTemplateEncryptionConfigurationArgs.java new file mode 100644 index 00000000000..319102c0c46 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/RepositoryCreationTemplateEncryptionConfigurationArgs.java @@ -0,0 +1,120 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.ecr.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RepositoryCreationTemplateEncryptionConfigurationArgs extends com.pulumi.resources.ResourceArgs { + + public static final RepositoryCreationTemplateEncryptionConfigurationArgs Empty = new RepositoryCreationTemplateEncryptionConfigurationArgs(); + + /** + * The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + * + */ + @Import(name="encryptionType") + private @Nullable Output encryptionType; + + /** + * @return The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + * + */ + public Optional> encryptionType() { + return Optional.ofNullable(this.encryptionType); + } + + /** + * The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + * + */ + @Import(name="kmsKey") + private @Nullable Output kmsKey; + + /** + * @return The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + * + */ + public Optional> kmsKey() { + return Optional.ofNullable(this.kmsKey); + } + + private RepositoryCreationTemplateEncryptionConfigurationArgs() {} + + private RepositoryCreationTemplateEncryptionConfigurationArgs(RepositoryCreationTemplateEncryptionConfigurationArgs $) { + this.encryptionType = $.encryptionType; + this.kmsKey = $.kmsKey; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RepositoryCreationTemplateEncryptionConfigurationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RepositoryCreationTemplateEncryptionConfigurationArgs $; + + public Builder() { + $ = new RepositoryCreationTemplateEncryptionConfigurationArgs(); + } + + public Builder(RepositoryCreationTemplateEncryptionConfigurationArgs defaults) { + $ = new RepositoryCreationTemplateEncryptionConfigurationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param encryptionType The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + * + * @return builder + * + */ + public Builder encryptionType(@Nullable Output encryptionType) { + $.encryptionType = encryptionType; + return this; + } + + /** + * @param encryptionType The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + * + * @return builder + * + */ + public Builder encryptionType(String encryptionType) { + return encryptionType(Output.of(encryptionType)); + } + + /** + * @param kmsKey The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + * + * @return builder + * + */ + public Builder kmsKey(@Nullable Output kmsKey) { + $.kmsKey = kmsKey; + return this; + } + + /** + * @param kmsKey The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + * + * @return builder + * + */ + public Builder kmsKey(String kmsKey) { + return kmsKey(Output.of(kmsKey)); + } + + public RepositoryCreationTemplateEncryptionConfigurationArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/RepositoryCreationTemplateState.java b/sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/RepositoryCreationTemplateState.java new file mode 100644 index 00000000000..d846436cd91 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/ecr/inputs/RepositoryCreationTemplateState.java @@ -0,0 +1,419 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.ecr.inputs; + +import com.pulumi.aws.ecr.inputs.RepositoryCreationTemplateEncryptionConfigurationArgs; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RepositoryCreationTemplateState extends com.pulumi.resources.ResourceArgs { + + public static final RepositoryCreationTemplateState Empty = new RepositoryCreationTemplateState(); + + /** + * Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + */ + @Import(name="appliedFors") + private @Nullable Output> appliedFors; + + /** + * @return Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + */ + public Optional>> appliedFors() { + return Optional.ofNullable(this.appliedFors); + } + + /** + * A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + * + */ + @Import(name="customRoleArn") + private @Nullable Output customRoleArn; + + /** + * @return A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + * + */ + public Optional> customRoleArn() { + return Optional.ofNullable(this.customRoleArn); + } + + /** + * The description for this template. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return The description for this template. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * Encryption configuration for any created repositories. See below for schema. + * + */ + @Import(name="encryptionConfigurations") + private @Nullable Output> encryptionConfigurations; + + /** + * @return Encryption configuration for any created repositories. See below for schema. + * + */ + public Optional>> encryptionConfigurations() { + return Optional.ofNullable(this.encryptionConfigurations); + } + + /** + * The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + * + */ + @Import(name="imageTagMutability") + private @Nullable Output imageTagMutability; + + /** + * @return The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + * + */ + public Optional> imageTagMutability() { + return Optional.ofNullable(this.imageTagMutability); + } + + /** + * The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + * + */ + @Import(name="lifecyclePolicy") + private @Nullable Output lifecyclePolicy; + + /** + * @return The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + * + */ + public Optional> lifecyclePolicy() { + return Optional.ofNullable(this.lifecyclePolicy); + } + + /** + * The repository name prefix to match against. + * + */ + @Import(name="prefix") + private @Nullable Output prefix; + + /** + * @return The repository name prefix to match against. + * + */ + public Optional> prefix() { + return Optional.ofNullable(this.prefix); + } + + /** + * The registry ID the repository creation template applies to. + * + */ + @Import(name="registryId") + private @Nullable Output registryId; + + /** + * @return The registry ID the repository creation template applies to. + * + */ + public Optional> registryId() { + return Optional.ofNullable(this.registryId); + } + + @Import(name="repositoryPolicy") + private @Nullable Output repositoryPolicy; + + public Optional> repositoryPolicy() { + return Optional.ofNullable(this.repositoryPolicy); + } + + /** + * A map of tags to assign to any created repositories. + * + */ + @Import(name="resourceTags") + private @Nullable Output> resourceTags; + + /** + * @return A map of tags to assign to any created repositories. + * + */ + public Optional>> resourceTags() { + return Optional.ofNullable(this.resourceTags); + } + + private RepositoryCreationTemplateState() {} + + private RepositoryCreationTemplateState(RepositoryCreationTemplateState $) { + this.appliedFors = $.appliedFors; + this.customRoleArn = $.customRoleArn; + this.description = $.description; + this.encryptionConfigurations = $.encryptionConfigurations; + this.imageTagMutability = $.imageTagMutability; + this.lifecyclePolicy = $.lifecyclePolicy; + this.prefix = $.prefix; + this.registryId = $.registryId; + this.repositoryPolicy = $.repositoryPolicy; + this.resourceTags = $.resourceTags; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RepositoryCreationTemplateState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RepositoryCreationTemplateState $; + + public Builder() { + $ = new RepositoryCreationTemplateState(); + } + + public Builder(RepositoryCreationTemplateState defaults) { + $ = new RepositoryCreationTemplateState(Objects.requireNonNull(defaults)); + } + + /** + * @param appliedFors Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + * @return builder + * + */ + public Builder appliedFors(@Nullable Output> appliedFors) { + $.appliedFors = appliedFors; + return this; + } + + /** + * @param appliedFors Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + * @return builder + * + */ + public Builder appliedFors(List appliedFors) { + return appliedFors(Output.of(appliedFors)); + } + + /** + * @param appliedFors Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + * @return builder + * + */ + public Builder appliedFors(String... appliedFors) { + return appliedFors(List.of(appliedFors)); + } + + /** + * @param customRoleArn A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + * + * @return builder + * + */ + public Builder customRoleArn(@Nullable Output customRoleArn) { + $.customRoleArn = customRoleArn; + return this; + } + + /** + * @param customRoleArn A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + * + * @return builder + * + */ + public Builder customRoleArn(String customRoleArn) { + return customRoleArn(Output.of(customRoleArn)); + } + + /** + * @param description The description for this template. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description The description for this template. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param encryptionConfigurations Encryption configuration for any created repositories. See below for schema. + * + * @return builder + * + */ + public Builder encryptionConfigurations(@Nullable Output> encryptionConfigurations) { + $.encryptionConfigurations = encryptionConfigurations; + return this; + } + + /** + * @param encryptionConfigurations Encryption configuration for any created repositories. See below for schema. + * + * @return builder + * + */ + public Builder encryptionConfigurations(List encryptionConfigurations) { + return encryptionConfigurations(Output.of(encryptionConfigurations)); + } + + /** + * @param encryptionConfigurations Encryption configuration for any created repositories. See below for schema. + * + * @return builder + * + */ + public Builder encryptionConfigurations(RepositoryCreationTemplateEncryptionConfigurationArgs... encryptionConfigurations) { + return encryptionConfigurations(List.of(encryptionConfigurations)); + } + + /** + * @param imageTagMutability The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + * + * @return builder + * + */ + public Builder imageTagMutability(@Nullable Output imageTagMutability) { + $.imageTagMutability = imageTagMutability; + return this; + } + + /** + * @param imageTagMutability The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + * + * @return builder + * + */ + public Builder imageTagMutability(String imageTagMutability) { + return imageTagMutability(Output.of(imageTagMutability)); + } + + /** + * @param lifecyclePolicy The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + * + * @return builder + * + */ + public Builder lifecyclePolicy(@Nullable Output lifecyclePolicy) { + $.lifecyclePolicy = lifecyclePolicy; + return this; + } + + /** + * @param lifecyclePolicy The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + * + * @return builder + * + */ + public Builder lifecyclePolicy(String lifecyclePolicy) { + return lifecyclePolicy(Output.of(lifecyclePolicy)); + } + + /** + * @param prefix The repository name prefix to match against. + * + * @return builder + * + */ + public Builder prefix(@Nullable Output prefix) { + $.prefix = prefix; + return this; + } + + /** + * @param prefix The repository name prefix to match against. + * + * @return builder + * + */ + public Builder prefix(String prefix) { + return prefix(Output.of(prefix)); + } + + /** + * @param registryId The registry ID the repository creation template applies to. + * + * @return builder + * + */ + public Builder registryId(@Nullable Output registryId) { + $.registryId = registryId; + return this; + } + + /** + * @param registryId The registry ID the repository creation template applies to. + * + * @return builder + * + */ + public Builder registryId(String registryId) { + return registryId(Output.of(registryId)); + } + + public Builder repositoryPolicy(@Nullable Output repositoryPolicy) { + $.repositoryPolicy = repositoryPolicy; + return this; + } + + public Builder repositoryPolicy(String repositoryPolicy) { + return repositoryPolicy(Output.of(repositoryPolicy)); + } + + /** + * @param resourceTags A map of tags to assign to any created repositories. + * + * @return builder + * + */ + public Builder resourceTags(@Nullable Output> resourceTags) { + $.resourceTags = resourceTags; + return this; + } + + /** + * @param resourceTags A map of tags to assign to any created repositories. + * + * @return builder + * + */ + public Builder resourceTags(Map resourceTags) { + return resourceTags(Output.of(resourceTags)); + } + + public RepositoryCreationTemplateState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/ecr/outputs/GetRepositoryCreationTemplateEncryptionConfiguration.java b/sdk/java/src/main/java/com/pulumi/aws/ecr/outputs/GetRepositoryCreationTemplateEncryptionConfiguration.java new file mode 100644 index 00000000000..8b582760ced --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/ecr/outputs/GetRepositoryCreationTemplateEncryptionConfiguration.java @@ -0,0 +1,81 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.ecr.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetRepositoryCreationTemplateEncryptionConfiguration { + /** + * @return Encryption type to use for any created repositories, either `AES256` or `KMS`. + * + */ + private String encryptionType; + /** + * @return If `encryption_type` is `KMS`, the ARN of the KMS key used. + * + */ + private String kmsKey; + + private GetRepositoryCreationTemplateEncryptionConfiguration() {} + /** + * @return Encryption type to use for any created repositories, either `AES256` or `KMS`. + * + */ + public String encryptionType() { + return this.encryptionType; + } + /** + * @return If `encryption_type` is `KMS`, the ARN of the KMS key used. + * + */ + public String kmsKey() { + return this.kmsKey; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetRepositoryCreationTemplateEncryptionConfiguration defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String encryptionType; + private String kmsKey; + public Builder() {} + public Builder(GetRepositoryCreationTemplateEncryptionConfiguration defaults) { + Objects.requireNonNull(defaults); + this.encryptionType = defaults.encryptionType; + this.kmsKey = defaults.kmsKey; + } + + @CustomType.Setter + public Builder encryptionType(String encryptionType) { + if (encryptionType == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateEncryptionConfiguration", "encryptionType"); + } + this.encryptionType = encryptionType; + return this; + } + @CustomType.Setter + public Builder kmsKey(String kmsKey) { + if (kmsKey == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateEncryptionConfiguration", "kmsKey"); + } + this.kmsKey = kmsKey; + return this; + } + public GetRepositoryCreationTemplateEncryptionConfiguration build() { + final var _resultValue = new GetRepositoryCreationTemplateEncryptionConfiguration(); + _resultValue.encryptionType = encryptionType; + _resultValue.kmsKey = kmsKey; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/ecr/outputs/GetRepositoryCreationTemplateResult.java b/sdk/java/src/main/java/com/pulumi/aws/ecr/outputs/GetRepositoryCreationTemplateResult.java new file mode 100644 index 00000000000..74a92643c91 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/ecr/outputs/GetRepositoryCreationTemplateResult.java @@ -0,0 +1,289 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.ecr.outputs; + +import com.pulumi.aws.ecr.outputs.GetRepositoryCreationTemplateEncryptionConfiguration; +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +@CustomType +public final class GetRepositoryCreationTemplateResult { + /** + * @return Which features this template applies to. Contains one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + */ + private List appliedFors; + /** + * @return The ARN of the custom role used for repository creation. + * + */ + private String customRoleArn; + /** + * @return The description for this template. + * + */ + private String description; + /** + * @return Encryption configuration for any created repositories. See Encryption Configuration below. + * + */ + private List encryptionConfigurations; + /** + * @return The provider-assigned unique ID for this managed resource. + * + */ + private String id; + /** + * @return The tag mutability setting for any created repositories. + * + */ + private String imageTagMutability; + /** + * @return The lifecycle policy document to apply to any created repositories. + * + */ + private String lifecyclePolicy; + private String prefix; + /** + * @return The registry ID the repository creation template applies to. + * + */ + private String registryId; + /** + * @return The registry policy document to apply to any created repositories. + * + */ + private String repositoryPolicy; + /** + * @return A map of tags to assign to any created repositories. + * + */ + private Map resourceTags; + + private GetRepositoryCreationTemplateResult() {} + /** + * @return Which features this template applies to. Contains one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + * + */ + public List appliedFors() { + return this.appliedFors; + } + /** + * @return The ARN of the custom role used for repository creation. + * + */ + public String customRoleArn() { + return this.customRoleArn; + } + /** + * @return The description for this template. + * + */ + public String description() { + return this.description; + } + /** + * @return Encryption configuration for any created repositories. See Encryption Configuration below. + * + */ + public List encryptionConfigurations() { + return this.encryptionConfigurations; + } + /** + * @return The provider-assigned unique ID for this managed resource. + * + */ + public String id() { + return this.id; + } + /** + * @return The tag mutability setting for any created repositories. + * + */ + public String imageTagMutability() { + return this.imageTagMutability; + } + /** + * @return The lifecycle policy document to apply to any created repositories. + * + */ + public String lifecyclePolicy() { + return this.lifecyclePolicy; + } + public String prefix() { + return this.prefix; + } + /** + * @return The registry ID the repository creation template applies to. + * + */ + public String registryId() { + return this.registryId; + } + /** + * @return The registry policy document to apply to any created repositories. + * + */ + public String repositoryPolicy() { + return this.repositoryPolicy; + } + /** + * @return A map of tags to assign to any created repositories. + * + */ + public Map resourceTags() { + return this.resourceTags; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetRepositoryCreationTemplateResult defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List appliedFors; + private String customRoleArn; + private String description; + private List encryptionConfigurations; + private String id; + private String imageTagMutability; + private String lifecyclePolicy; + private String prefix; + private String registryId; + private String repositoryPolicy; + private Map resourceTags; + public Builder() {} + public Builder(GetRepositoryCreationTemplateResult defaults) { + Objects.requireNonNull(defaults); + this.appliedFors = defaults.appliedFors; + this.customRoleArn = defaults.customRoleArn; + this.description = defaults.description; + this.encryptionConfigurations = defaults.encryptionConfigurations; + this.id = defaults.id; + this.imageTagMutability = defaults.imageTagMutability; + this.lifecyclePolicy = defaults.lifecyclePolicy; + this.prefix = defaults.prefix; + this.registryId = defaults.registryId; + this.repositoryPolicy = defaults.repositoryPolicy; + this.resourceTags = defaults.resourceTags; + } + + @CustomType.Setter + public Builder appliedFors(List appliedFors) { + if (appliedFors == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateResult", "appliedFors"); + } + this.appliedFors = appliedFors; + return this; + } + public Builder appliedFors(String... appliedFors) { + return appliedFors(List.of(appliedFors)); + } + @CustomType.Setter + public Builder customRoleArn(String customRoleArn) { + if (customRoleArn == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateResult", "customRoleArn"); + } + this.customRoleArn = customRoleArn; + return this; + } + @CustomType.Setter + public Builder description(String description) { + if (description == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateResult", "description"); + } + this.description = description; + return this; + } + @CustomType.Setter + public Builder encryptionConfigurations(List encryptionConfigurations) { + if (encryptionConfigurations == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateResult", "encryptionConfigurations"); + } + this.encryptionConfigurations = encryptionConfigurations; + return this; + } + public Builder encryptionConfigurations(GetRepositoryCreationTemplateEncryptionConfiguration... encryptionConfigurations) { + return encryptionConfigurations(List.of(encryptionConfigurations)); + } + @CustomType.Setter + public Builder id(String id) { + if (id == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateResult", "id"); + } + this.id = id; + return this; + } + @CustomType.Setter + public Builder imageTagMutability(String imageTagMutability) { + if (imageTagMutability == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateResult", "imageTagMutability"); + } + this.imageTagMutability = imageTagMutability; + return this; + } + @CustomType.Setter + public Builder lifecyclePolicy(String lifecyclePolicy) { + if (lifecyclePolicy == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateResult", "lifecyclePolicy"); + } + this.lifecyclePolicy = lifecyclePolicy; + return this; + } + @CustomType.Setter + public Builder prefix(String prefix) { + if (prefix == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateResult", "prefix"); + } + this.prefix = prefix; + return this; + } + @CustomType.Setter + public Builder registryId(String registryId) { + if (registryId == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateResult", "registryId"); + } + this.registryId = registryId; + return this; + } + @CustomType.Setter + public Builder repositoryPolicy(String repositoryPolicy) { + if (repositoryPolicy == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateResult", "repositoryPolicy"); + } + this.repositoryPolicy = repositoryPolicy; + return this; + } + @CustomType.Setter + public Builder resourceTags(Map resourceTags) { + if (resourceTags == null) { + throw new MissingRequiredPropertyException("GetRepositoryCreationTemplateResult", "resourceTags"); + } + this.resourceTags = resourceTags; + return this; + } + public GetRepositoryCreationTemplateResult build() { + final var _resultValue = new GetRepositoryCreationTemplateResult(); + _resultValue.appliedFors = appliedFors; + _resultValue.customRoleArn = customRoleArn; + _resultValue.description = description; + _resultValue.encryptionConfigurations = encryptionConfigurations; + _resultValue.id = id; + _resultValue.imageTagMutability = imageTagMutability; + _resultValue.lifecyclePolicy = lifecyclePolicy; + _resultValue.prefix = prefix; + _resultValue.registryId = registryId; + _resultValue.repositoryPolicy = repositoryPolicy; + _resultValue.resourceTags = resourceTags; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/ecr/outputs/RepositoryCreationTemplateEncryptionConfiguration.java b/sdk/java/src/main/java/com/pulumi/aws/ecr/outputs/RepositoryCreationTemplateEncryptionConfiguration.java new file mode 100644 index 00000000000..c654652bc76 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/ecr/outputs/RepositoryCreationTemplateEncryptionConfiguration.java @@ -0,0 +1,78 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.ecr.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class RepositoryCreationTemplateEncryptionConfiguration { + /** + * @return The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + * + */ + private @Nullable String encryptionType; + /** + * @return The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + * + */ + private @Nullable String kmsKey; + + private RepositoryCreationTemplateEncryptionConfiguration() {} + /** + * @return The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + * + */ + public Optional encryptionType() { + return Optional.ofNullable(this.encryptionType); + } + /** + * @return The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + * + */ + public Optional kmsKey() { + return Optional.ofNullable(this.kmsKey); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(RepositoryCreationTemplateEncryptionConfiguration defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String encryptionType; + private @Nullable String kmsKey; + public Builder() {} + public Builder(RepositoryCreationTemplateEncryptionConfiguration defaults) { + Objects.requireNonNull(defaults); + this.encryptionType = defaults.encryptionType; + this.kmsKey = defaults.kmsKey; + } + + @CustomType.Setter + public Builder encryptionType(@Nullable String encryptionType) { + + this.encryptionType = encryptionType; + return this; + } + @CustomType.Setter + public Builder kmsKey(@Nullable String kmsKey) { + + this.kmsKey = kmsKey; + return this; + } + public RepositoryCreationTemplateEncryptionConfiguration build() { + final var _resultValue = new RepositoryCreationTemplateEncryptionConfiguration(); + _resultValue.encryptionType = encryptionType; + _resultValue.kmsKey = kmsKey; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/eks/Cluster.java b/sdk/java/src/main/java/com/pulumi/aws/eks/Cluster.java index 0fa537070dd..b2195ec1a48 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/eks/Cluster.java +++ b/sdk/java/src/main/java/com/pulumi/aws/eks/Cluster.java @@ -12,6 +12,7 @@ import com.pulumi.aws.eks.outputs.ClusterIdentity; import com.pulumi.aws.eks.outputs.ClusterKubernetesNetworkConfig; import com.pulumi.aws.eks.outputs.ClusterOutpostConfig; +import com.pulumi.aws.eks.outputs.ClusterUpgradePolicy; import com.pulumi.aws.eks.outputs.ClusterVpcConfig; import com.pulumi.core.Output; import com.pulumi.core.annotations.Export; @@ -657,6 +658,20 @@ public Output>> tags() { public Output> tagsAll() { return this.tagsAll; } + /** + * Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + * + */ + @Export(name="upgradePolicy", refs={ClusterUpgradePolicy.class}, tree="[0]") + private Output upgradePolicy; + + /** + * @return Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + * + */ + public Output upgradePolicy() { + return this.upgradePolicy; + } /** * Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. * diff --git a/sdk/java/src/main/java/com/pulumi/aws/eks/ClusterArgs.java b/sdk/java/src/main/java/com/pulumi/aws/eks/ClusterArgs.java index f1166203c0c..97707cea911 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/eks/ClusterArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/eks/ClusterArgs.java @@ -7,6 +7,7 @@ import com.pulumi.aws.eks.inputs.ClusterEncryptionConfigArgs; import com.pulumi.aws.eks.inputs.ClusterKubernetesNetworkConfigArgs; import com.pulumi.aws.eks.inputs.ClusterOutpostConfigArgs; +import com.pulumi.aws.eks.inputs.ClusterUpgradePolicyArgs; import com.pulumi.aws.eks.inputs.ClusterVpcConfigArgs; import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; @@ -166,6 +167,21 @@ public Optional>> tags() { return Optional.ofNullable(this.tags); } + /** + * Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + * + */ + @Import(name="upgradePolicy") + private @Nullable Output upgradePolicy; + + /** + * @return Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + * + */ + public Optional> upgradePolicy() { + return Optional.ofNullable(this.upgradePolicy); + } + /** * Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. * @@ -213,6 +229,7 @@ private ClusterArgs(ClusterArgs $) { this.outpostConfig = $.outpostConfig; this.roleArn = $.roleArn; this.tags = $.tags; + this.upgradePolicy = $.upgradePolicy; this.version = $.version; this.vpcConfig = $.vpcConfig; } @@ -447,6 +464,27 @@ public Builder tags(Map tags) { return tags(Output.of(tags)); } + /** + * @param upgradePolicy Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + * + * @return builder + * + */ + public Builder upgradePolicy(@Nullable Output upgradePolicy) { + $.upgradePolicy = upgradePolicy; + return this; + } + + /** + * @param upgradePolicy Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + * + * @return builder + * + */ + public Builder upgradePolicy(ClusterUpgradePolicyArgs upgradePolicy) { + return upgradePolicy(Output.of(upgradePolicy)); + } + /** * @param version Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. * diff --git a/sdk/java/src/main/java/com/pulumi/aws/eks/inputs/ClusterState.java b/sdk/java/src/main/java/com/pulumi/aws/eks/inputs/ClusterState.java index de7823a34b6..1402c356910 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/eks/inputs/ClusterState.java +++ b/sdk/java/src/main/java/com/pulumi/aws/eks/inputs/ClusterState.java @@ -9,6 +9,7 @@ import com.pulumi.aws.eks.inputs.ClusterIdentityArgs; import com.pulumi.aws.eks.inputs.ClusterKubernetesNetworkConfigArgs; import com.pulumi.aws.eks.inputs.ClusterOutpostConfigArgs; +import com.pulumi.aws.eks.inputs.ClusterUpgradePolicyArgs; import com.pulumi.aws.eks.inputs.ClusterVpcConfigArgs; import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; @@ -317,6 +318,21 @@ public Optional>> tagsAll() { return Optional.ofNullable(this.tagsAll); } + /** + * Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + * + */ + @Import(name="upgradePolicy") + private @Nullable Output upgradePolicy; + + /** + * @return Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + * + */ + public Optional> upgradePolicy() { + return Optional.ofNullable(this.upgradePolicy); + } + /** * Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. * @@ -374,6 +390,7 @@ private ClusterState(ClusterState $) { this.status = $.status; this.tags = $.tags; this.tagsAll = $.tagsAll; + this.upgradePolicy = $.upgradePolicy; this.version = $.version; this.vpcConfig = $.vpcConfig; } @@ -828,6 +845,27 @@ public Builder tagsAll(Map tagsAll) { return tagsAll(Output.of(tagsAll)); } + /** + * @param upgradePolicy Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + * + * @return builder + * + */ + public Builder upgradePolicy(@Nullable Output upgradePolicy) { + $.upgradePolicy = upgradePolicy; + return this; + } + + /** + * @param upgradePolicy Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + * + * @return builder + * + */ + public Builder upgradePolicy(ClusterUpgradePolicyArgs upgradePolicy) { + return upgradePolicy(Output.of(upgradePolicy)); + } + /** * @param version Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. * diff --git a/sdk/java/src/main/java/com/pulumi/aws/eks/inputs/ClusterUpgradePolicyArgs.java b/sdk/java/src/main/java/com/pulumi/aws/eks/inputs/ClusterUpgradePolicyArgs.java new file mode 100644 index 00000000000..ef8b3ea5287 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/eks/inputs/ClusterUpgradePolicyArgs.java @@ -0,0 +1,83 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.eks.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ClusterUpgradePolicyArgs extends com.pulumi.resources.ResourceArgs { + + public static final ClusterUpgradePolicyArgs Empty = new ClusterUpgradePolicyArgs(); + + /** + * Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + * + */ + @Import(name="supportType") + private @Nullable Output supportType; + + /** + * @return Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + * + */ + public Optional> supportType() { + return Optional.ofNullable(this.supportType); + } + + private ClusterUpgradePolicyArgs() {} + + private ClusterUpgradePolicyArgs(ClusterUpgradePolicyArgs $) { + this.supportType = $.supportType; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ClusterUpgradePolicyArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ClusterUpgradePolicyArgs $; + + public Builder() { + $ = new ClusterUpgradePolicyArgs(); + } + + public Builder(ClusterUpgradePolicyArgs defaults) { + $ = new ClusterUpgradePolicyArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param supportType Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + * + * @return builder + * + */ + public Builder supportType(@Nullable Output supportType) { + $.supportType = supportType; + return this; + } + + /** + * @param supportType Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + * + * @return builder + * + */ + public Builder supportType(String supportType) { + return supportType(Output.of(supportType)); + } + + public ClusterUpgradePolicyArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/eks/outputs/ClusterUpgradePolicy.java b/sdk/java/src/main/java/com/pulumi/aws/eks/outputs/ClusterUpgradePolicy.java new file mode 100644 index 00000000000..a0dc78834fa --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/eks/outputs/ClusterUpgradePolicy.java @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.eks.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class ClusterUpgradePolicy { + /** + * @return Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + * + */ + private @Nullable String supportType; + + private ClusterUpgradePolicy() {} + /** + * @return Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + * + */ + public Optional supportType() { + return Optional.ofNullable(this.supportType); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ClusterUpgradePolicy defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String supportType; + public Builder() {} + public Builder(ClusterUpgradePolicy defaults) { + Objects.requireNonNull(defaults); + this.supportType = defaults.supportType; + } + + @CustomType.Setter + public Builder supportType(@Nullable String supportType) { + + this.supportType = supportType; + return this; + } + public ClusterUpgradePolicy build() { + final var _resultValue = new ClusterUpgradePolicy(); + _resultValue.supportType = supportType; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/eks/outputs/GetClusterResult.java b/sdk/java/src/main/java/com/pulumi/aws/eks/outputs/GetClusterResult.java index 96a627e58aa..238b1f5f236 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/eks/outputs/GetClusterResult.java +++ b/sdk/java/src/main/java/com/pulumi/aws/eks/outputs/GetClusterResult.java @@ -8,6 +8,7 @@ import com.pulumi.aws.eks.outputs.GetClusterIdentity; import com.pulumi.aws.eks.outputs.GetClusterKubernetesNetworkConfig; import com.pulumi.aws.eks.outputs.GetClusterOutpostConfig; +import com.pulumi.aws.eks.outputs.GetClusterUpgradePolicy; import com.pulumi.aws.eks.outputs.GetClusterVpcConfig; import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; @@ -94,6 +95,11 @@ public final class GetClusterResult { * */ private Map tags; + /** + * @return (Optional) Configuration block for the support policy to use for the cluster. + * + */ + private List upgradePolicies; /** * @return Kubernetes server version for the cluster. * @@ -214,6 +220,13 @@ public String status() { public Map tags() { return this.tags; } + /** + * @return (Optional) Configuration block for the support policy to use for the cluster. + * + */ + public List upgradePolicies() { + return this.upgradePolicies; + } /** * @return Kubernetes server version for the cluster. * @@ -254,6 +267,7 @@ public static final class Builder { private String roleArn; private String status; private Map tags; + private List upgradePolicies; private String version; private GetClusterVpcConfig vpcConfig; public Builder() {} @@ -275,6 +289,7 @@ public Builder(GetClusterResult defaults) { this.roleArn = defaults.roleArn; this.status = defaults.status; this.tags = defaults.tags; + this.upgradePolicies = defaults.upgradePolicies; this.version = defaults.version; this.vpcConfig = defaults.vpcConfig; } @@ -426,6 +441,17 @@ public Builder tags(Map tags) { return this; } @CustomType.Setter + public Builder upgradePolicies(List upgradePolicies) { + if (upgradePolicies == null) { + throw new MissingRequiredPropertyException("GetClusterResult", "upgradePolicies"); + } + this.upgradePolicies = upgradePolicies; + return this; + } + public Builder upgradePolicies(GetClusterUpgradePolicy... upgradePolicies) { + return upgradePolicies(List.of(upgradePolicies)); + } + @CustomType.Setter public Builder version(String version) { if (version == null) { throw new MissingRequiredPropertyException("GetClusterResult", "version"); @@ -459,6 +485,7 @@ public GetClusterResult build() { _resultValue.roleArn = roleArn; _resultValue.status = status; _resultValue.tags = tags; + _resultValue.upgradePolicies = upgradePolicies; _resultValue.version = version; _resultValue.vpcConfig = vpcConfig; return _resultValue; diff --git a/sdk/java/src/main/java/com/pulumi/aws/eks/outputs/GetClusterUpgradePolicy.java b/sdk/java/src/main/java/com/pulumi/aws/eks/outputs/GetClusterUpgradePolicy.java new file mode 100644 index 00000000000..92a501bdf78 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/eks/outputs/GetClusterUpgradePolicy.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.eks.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetClusterUpgradePolicy { + /** + * @return (Optional) Support type to use for the cluster. + * + */ + private String supportType; + + private GetClusterUpgradePolicy() {} + /** + * @return (Optional) Support type to use for the cluster. + * + */ + public String supportType() { + return this.supportType; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetClusterUpgradePolicy defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String supportType; + public Builder() {} + public Builder(GetClusterUpgradePolicy defaults) { + Objects.requireNonNull(defaults); + this.supportType = defaults.supportType; + } + + @CustomType.Setter + public Builder supportType(String supportType) { + if (supportType == null) { + throw new MissingRequiredPropertyException("GetClusterUpgradePolicy", "supportType"); + } + this.supportType = supportType; + return this; + } + public GetClusterUpgradePolicy build() { + final var _resultValue = new GetClusterUpgradePolicy(); + _resultValue.supportType = supportType; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/elasticache/UserGroupAssociation.java b/sdk/java/src/main/java/com/pulumi/aws/elasticache/UserGroupAssociation.java index 3ff30e77582..b20215f212e 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/elasticache/UserGroupAssociation.java +++ b/sdk/java/src/main/java/com/pulumi/aws/elasticache/UserGroupAssociation.java @@ -14,10 +14,6 @@ import javax.annotation.Nullable; /** - * Associate an existing ElastiCache user and an existing user group. - * - * > **NOTE:** The provider will detect changes in the `aws.elasticache.UserGroup` since `aws.elasticache.UserGroupAssociation` changes the user IDs associated with the user group. You can ignore these changes with the `ignore_changes` option as shown in the example. - * * ## Example Usage * * <!--Start PulumiCodeChooser --> diff --git a/sdk/java/src/main/java/com/pulumi/aws/inputs/ProviderEndpointArgs.java b/sdk/java/src/main/java/com/pulumi/aws/inputs/ProviderEndpointArgs.java index 501fee67278..a62f0d9c0f9 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/inputs/ProviderEndpointArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/inputs/ProviderEndpointArgs.java @@ -3360,6 +3360,21 @@ public Optional> rekognition() { return Optional.ofNullable(this.rekognition); } + /** + * Use this to override the default service endpoint URL + * + */ + @Import(name="resiliencehub") + private @Nullable Output resiliencehub; + + /** + * @return Use this to override the default service endpoint URL + * + */ + public Optional> resiliencehub() { + return Optional.ofNullable(this.resiliencehub); + } + /** * Use this to override the default service endpoint URL * @@ -4546,6 +4561,7 @@ private ProviderEndpointArgs(ProviderEndpointArgs $) { this.redshiftdataapiservice = $.redshiftdataapiservice; this.redshiftserverless = $.redshiftserverless; this.rekognition = $.rekognition; + this.resiliencehub = $.resiliencehub; this.resourceexplorer2 = $.resourceexplorer2; this.resourcegroups = $.resourcegroups; this.resourcegroupstagging = $.resourcegroupstagging; @@ -9313,6 +9329,27 @@ public Builder rekognition(String rekognition) { return rekognition(Output.of(rekognition)); } + /** + * @param resiliencehub Use this to override the default service endpoint URL + * + * @return builder + * + */ + public Builder resiliencehub(@Nullable Output resiliencehub) { + $.resiliencehub = resiliencehub; + return this; + } + + /** + * @param resiliencehub Use this to override the default service endpoint URL + * + * @return builder + * + */ + public Builder resiliencehub(String resiliencehub) { + return resiliencehub(Output.of(resiliencehub)); + } + /** * @param resourceexplorer2 Use this to override the default service endpoint URL * diff --git a/sdk/java/src/main/java/com/pulumi/aws/pipes/Pipe.java b/sdk/java/src/main/java/com/pulumi/aws/pipes/Pipe.java index 04a3cc2d6ad..d810cadf063 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/pipes/Pipe.java +++ b/sdk/java/src/main/java/com/pulumi/aws/pipes/Pipe.java @@ -241,6 +241,64 @@ * * <!--End PulumiCodeChooser --> * + * ### CloudWatch Logs Logging Configuration Usage + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.cloudwatch.LogGroup;
+ * import com.pulumi.aws.cloudwatch.LogGroupArgs;
+ * import com.pulumi.aws.pipes.Pipe;
+ * import com.pulumi.aws.pipes.PipeArgs;
+ * import com.pulumi.aws.pipes.inputs.PipeLogConfigurationArgs;
+ * import com.pulumi.aws.pipes.inputs.PipeLogConfigurationCloudwatchLogsLogDestinationArgs;
+ * import com.pulumi.resources.CustomResourceOptions;
+ * 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 LogGroup("example", LogGroupArgs.builder()
+ *             .name("example-pipe-target")
+ *             .build());
+ * 
+ *         var examplePipe = new Pipe("examplePipe", PipeArgs.builder()
+ *             .name("example-pipe")
+ *             .roleArn(exampleAwsIamRole.arn())
+ *             .source(sourceAwsSqsQueue.arn())
+ *             .target(targetAwsSqsQueue.arn())
+ *             .logConfiguration(PipeLogConfigurationArgs.builder()
+ *                 .includeExecutionDatas("ALL")
+ *                 .level("INFO")
+ *                 .cloudwatchLogsLogDestination(PipeLogConfigurationCloudwatchLogsLogDestinationArgs.builder()
+ *                     .logGroupArn(targetAwsCloudwatchLogGroup.arn())
+ *                     .build())
+ *                 .build())
+ *             .build(), CustomResourceOptions.builder()
+ *                 .dependsOn(                
+ *                     source,
+ *                     target)
+ *                 .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * * ### SQS Source and Target Configuration Usage * * <!--Start PulumiCodeChooser --> diff --git a/sdk/java/src/main/java/com/pulumi/aws/pipes/inputs/PipeLogConfigurationArgs.java b/sdk/java/src/main/java/com/pulumi/aws/pipes/inputs/PipeLogConfigurationArgs.java index 31d3d1df03b..93c375e39a7 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/pipes/inputs/PipeLogConfigurationArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/pipes/inputs/PipeLogConfigurationArgs.java @@ -10,6 +10,7 @@ import com.pulumi.core.annotations.Import; import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.String; +import java.util.List; import java.util.Objects; import java.util.Optional; import javax.annotation.Nullable; @@ -49,6 +50,21 @@ public Optional> firehose return Optional.ofNullable(this.firehoseLogDestination); } + /** + * String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + * + */ + @Import(name="includeExecutionDatas") + private @Nullable Output> includeExecutionDatas; + + /** + * @return String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + * + */ + public Optional>> includeExecutionDatas() { + return Optional.ofNullable(this.includeExecutionDatas); + } + /** * The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. * @@ -84,6 +100,7 @@ private PipeLogConfigurationArgs() {} private PipeLogConfigurationArgs(PipeLogConfigurationArgs $) { this.cloudwatchLogsLogDestination = $.cloudwatchLogsLogDestination; this.firehoseLogDestination = $.firehoseLogDestination; + this.includeExecutionDatas = $.includeExecutionDatas; this.level = $.level; this.s3LogDestination = $.s3LogDestination; } @@ -148,6 +165,37 @@ public Builder firehoseLogDestination(PipeLogConfigurationFirehoseLogDestination return firehoseLogDestination(Output.of(firehoseLogDestination)); } + /** + * @param includeExecutionDatas String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + * + * @return builder + * + */ + public Builder includeExecutionDatas(@Nullable Output> includeExecutionDatas) { + $.includeExecutionDatas = includeExecutionDatas; + return this; + } + + /** + * @param includeExecutionDatas String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + * + * @return builder + * + */ + public Builder includeExecutionDatas(List includeExecutionDatas) { + return includeExecutionDatas(Output.of(includeExecutionDatas)); + } + + /** + * @param includeExecutionDatas String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + * + * @return builder + * + */ + public Builder includeExecutionDatas(String... includeExecutionDatas) { + return includeExecutionDatas(List.of(includeExecutionDatas)); + } + /** * @param level The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. * diff --git a/sdk/java/src/main/java/com/pulumi/aws/pipes/outputs/PipeLogConfiguration.java b/sdk/java/src/main/java/com/pulumi/aws/pipes/outputs/PipeLogConfiguration.java index 0dd6aa48061..8b3ec314015 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/pipes/outputs/PipeLogConfiguration.java +++ b/sdk/java/src/main/java/com/pulumi/aws/pipes/outputs/PipeLogConfiguration.java @@ -9,6 +9,7 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.String; +import java.util.List; import java.util.Objects; import java.util.Optional; import javax.annotation.Nullable; @@ -25,6 +26,11 @@ public final class PipeLogConfiguration { * */ private @Nullable PipeLogConfigurationFirehoseLogDestination firehoseLogDestination; + /** + * @return String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + * + */ + private @Nullable List includeExecutionDatas; /** * @return The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. * @@ -51,6 +57,13 @@ public Optional cloudwatchLogs public Optional firehoseLogDestination() { return Optional.ofNullable(this.firehoseLogDestination); } + /** + * @return String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + * + */ + public List includeExecutionDatas() { + return this.includeExecutionDatas == null ? List.of() : this.includeExecutionDatas; + } /** * @return The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. * @@ -77,6 +90,7 @@ public static Builder builder(PipeLogConfiguration defaults) { public static final class Builder { private @Nullable PipeLogConfigurationCloudwatchLogsLogDestination cloudwatchLogsLogDestination; private @Nullable PipeLogConfigurationFirehoseLogDestination firehoseLogDestination; + private @Nullable List includeExecutionDatas; private String level; private @Nullable PipeLogConfigurationS3LogDestination s3LogDestination; public Builder() {} @@ -84,6 +98,7 @@ public Builder(PipeLogConfiguration defaults) { Objects.requireNonNull(defaults); this.cloudwatchLogsLogDestination = defaults.cloudwatchLogsLogDestination; this.firehoseLogDestination = defaults.firehoseLogDestination; + this.includeExecutionDatas = defaults.includeExecutionDatas; this.level = defaults.level; this.s3LogDestination = defaults.s3LogDestination; } @@ -101,6 +116,15 @@ public Builder firehoseLogDestination(@Nullable PipeLogConfigurationFirehoseLogD return this; } @CustomType.Setter + public Builder includeExecutionDatas(@Nullable List includeExecutionDatas) { + + this.includeExecutionDatas = includeExecutionDatas; + return this; + } + public Builder includeExecutionDatas(String... includeExecutionDatas) { + return includeExecutionDatas(List.of(includeExecutionDatas)); + } + @CustomType.Setter public Builder level(String level) { if (level == null) { throw new MissingRequiredPropertyException("PipeLogConfiguration", "level"); @@ -118,6 +142,7 @@ public PipeLogConfiguration build() { final var _resultValue = new PipeLogConfiguration(); _resultValue.cloudwatchLogsLogDestination = cloudwatchLogsLogDestination; _resultValue.firehoseLogDestination = firehoseLogDestination; + _resultValue.includeExecutionDatas = includeExecutionDatas; _resultValue.level = level; _resultValue.s3LogDestination = s3LogDestination; return _resultValue; diff --git a/sdk/java/src/main/java/com/pulumi/aws/rds/Cluster.java b/sdk/java/src/main/java/com/pulumi/aws/rds/Cluster.java index 9f6b5d3197f..c97e4f425b7 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/rds/Cluster.java +++ b/sdk/java/src/main/java/com/pulumi/aws/rds/Cluster.java @@ -1115,42 +1115,84 @@ public Output networkType() { return this.networkType; } /** - * Port on which the DB accepts connections + * Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + * + */ + @Export(name="performanceInsightsEnabled", refs={Boolean.class}, tree="[0]") + private Output performanceInsightsEnabled; + + /** + * @return Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + * + */ + public Output> performanceInsightsEnabled() { + return Codegen.optional(this.performanceInsightsEnabled); + } + /** + * Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + * + */ + @Export(name="performanceInsightsKmsKeyId", refs={String.class}, tree="[0]") + private Output performanceInsightsKmsKeyId; + + /** + * @return Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + * + */ + public Output performanceInsightsKmsKeyId() { + return this.performanceInsightsKmsKeyId; + } + /** + * Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + * + */ + @Export(name="performanceInsightsRetentionPeriod", refs={Integer.class}, tree="[0]") + private Output performanceInsightsRetentionPeriod; + + /** + * @return Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + * + */ + public Output performanceInsightsRetentionPeriod() { + return this.performanceInsightsRetentionPeriod; + } + /** + * Port on which the DB accepts connections. * */ @Export(name="port", refs={Integer.class}, tree="[0]") private Output port; /** - * @return Port on which the DB accepts connections + * @return Port on which the DB accepts connections. * */ public Output port() { return this.port; } /** - * Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + * Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. * */ @Export(name="preferredBackupWindow", refs={String.class}, tree="[0]") private Output preferredBackupWindow; /** - * @return Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + * @return Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. * */ public Output preferredBackupWindow() { return this.preferredBackupWindow; } /** - * Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + * Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` * */ @Export(name="preferredMaintenanceWindow", refs={String.class}, tree="[0]") private Output preferredMaintenanceWindow; /** - * @return Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + * @return Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` * */ public Output preferredMaintenanceWindow() { diff --git a/sdk/java/src/main/java/com/pulumi/aws/rds/ClusterArgs.java b/sdk/java/src/main/java/com/pulumi/aws/rds/ClusterArgs.java index 9454952a9d0..dc769c907ea 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/rds/ClusterArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/rds/ClusterArgs.java @@ -640,14 +640,59 @@ public Optional> networkType() { } /** - * Port on which the DB accepts connections + * Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + * + */ + @Import(name="performanceInsightsEnabled") + private @Nullable Output performanceInsightsEnabled; + + /** + * @return Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + * + */ + public Optional> performanceInsightsEnabled() { + return Optional.ofNullable(this.performanceInsightsEnabled); + } + + /** + * Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + * + */ + @Import(name="performanceInsightsKmsKeyId") + private @Nullable Output performanceInsightsKmsKeyId; + + /** + * @return Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + * + */ + public Optional> performanceInsightsKmsKeyId() { + return Optional.ofNullable(this.performanceInsightsKmsKeyId); + } + + /** + * Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + * + */ + @Import(name="performanceInsightsRetentionPeriod") + private @Nullable Output performanceInsightsRetentionPeriod; + + /** + * @return Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + * + */ + public Optional> performanceInsightsRetentionPeriod() { + return Optional.ofNullable(this.performanceInsightsRetentionPeriod); + } + + /** + * Port on which the DB accepts connections. * */ @Import(name="port") private @Nullable Output port; /** - * @return Port on which the DB accepts connections + * @return Port on which the DB accepts connections. * */ public Optional> port() { @@ -655,14 +700,14 @@ public Optional> port() { } /** - * Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + * Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. * */ @Import(name="preferredBackupWindow") private @Nullable Output preferredBackupWindow; /** - * @return Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + * @return Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. * */ public Optional> preferredBackupWindow() { @@ -670,14 +715,14 @@ public Optional> preferredBackupWindow() { } /** - * Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + * Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` * */ @Import(name="preferredMaintenanceWindow") private @Nullable Output preferredMaintenanceWindow; /** - * @return Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + * @return Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` * */ public Optional> preferredMaintenanceWindow() { @@ -899,6 +944,9 @@ private ClusterArgs(ClusterArgs $) { this.masterUserSecretKmsKeyId = $.masterUserSecretKmsKeyId; this.masterUsername = $.masterUsername; this.networkType = $.networkType; + this.performanceInsightsEnabled = $.performanceInsightsEnabled; + this.performanceInsightsKmsKeyId = $.performanceInsightsKmsKeyId; + this.performanceInsightsRetentionPeriod = $.performanceInsightsRetentionPeriod; this.port = $.port; this.preferredBackupWindow = $.preferredBackupWindow; this.preferredMaintenanceWindow = $.preferredMaintenanceWindow; @@ -1870,7 +1918,70 @@ public Builder networkType(String networkType) { } /** - * @param port Port on which the DB accepts connections + * @param performanceInsightsEnabled Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + * + * @return builder + * + */ + public Builder performanceInsightsEnabled(@Nullable Output performanceInsightsEnabled) { + $.performanceInsightsEnabled = performanceInsightsEnabled; + return this; + } + + /** + * @param performanceInsightsEnabled Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + * + * @return builder + * + */ + public Builder performanceInsightsEnabled(Boolean performanceInsightsEnabled) { + return performanceInsightsEnabled(Output.of(performanceInsightsEnabled)); + } + + /** + * @param performanceInsightsKmsKeyId Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + * + * @return builder + * + */ + public Builder performanceInsightsKmsKeyId(@Nullable Output performanceInsightsKmsKeyId) { + $.performanceInsightsKmsKeyId = performanceInsightsKmsKeyId; + return this; + } + + /** + * @param performanceInsightsKmsKeyId Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + * + * @return builder + * + */ + public Builder performanceInsightsKmsKeyId(String performanceInsightsKmsKeyId) { + return performanceInsightsKmsKeyId(Output.of(performanceInsightsKmsKeyId)); + } + + /** + * @param performanceInsightsRetentionPeriod Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + * + * @return builder + * + */ + public Builder performanceInsightsRetentionPeriod(@Nullable Output performanceInsightsRetentionPeriod) { + $.performanceInsightsRetentionPeriod = performanceInsightsRetentionPeriod; + return this; + } + + /** + * @param performanceInsightsRetentionPeriod Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + * + * @return builder + * + */ + public Builder performanceInsightsRetentionPeriod(Integer performanceInsightsRetentionPeriod) { + return performanceInsightsRetentionPeriod(Output.of(performanceInsightsRetentionPeriod)); + } + + /** + * @param port Port on which the DB accepts connections. * * @return builder * @@ -1881,7 +1992,7 @@ public Builder port(@Nullable Output port) { } /** - * @param port Port on which the DB accepts connections + * @param port Port on which the DB accepts connections. * * @return builder * @@ -1891,7 +2002,7 @@ public Builder port(Integer port) { } /** - * @param preferredBackupWindow Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + * @param preferredBackupWindow Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. * * @return builder * @@ -1902,7 +2013,7 @@ public Builder preferredBackupWindow(@Nullable Output preferredBackupWin } /** - * @param preferredBackupWindow Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + * @param preferredBackupWindow Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. * * @return builder * @@ -1912,7 +2023,7 @@ public Builder preferredBackupWindow(String preferredBackupWindow) { } /** - * @param preferredMaintenanceWindow Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + * @param preferredMaintenanceWindow Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` * * @return builder * @@ -1923,7 +2034,7 @@ public Builder preferredMaintenanceWindow(@Nullable Output preferredMain } /** - * @param preferredMaintenanceWindow Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + * @param preferredMaintenanceWindow Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/aws/rds/Instance.java b/sdk/java/src/main/java/com/pulumi/aws/rds/Instance.java index bea5ad73bc3..bd937a8f8cf 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/rds/Instance.java +++ b/sdk/java/src/main/java/com/pulumi/aws/rds/Instance.java @@ -1737,6 +1737,20 @@ public Output> tagsAll() { public Output timezone() { return this.timezone; } + /** + * Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + * + */ + @Export(name="upgradeStorageConfig", refs={Boolean.class}, tree="[0]") + private Output upgradeStorageConfig; + + /** + * @return Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + * + */ + public Output> upgradeStorageConfig() { + return Codegen.optional(this.upgradeStorageConfig); + } /** * (Required unless a `snapshot_identifier` or `replicate_source_db` * is provided) Username for the master DB user. Cannot be specified for a replica. diff --git a/sdk/java/src/main/java/com/pulumi/aws/rds/InstanceArgs.java b/sdk/java/src/main/java/com/pulumi/aws/rds/InstanceArgs.java index 509600b9d22..465b01a8659 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/rds/InstanceArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/rds/InstanceArgs.java @@ -1180,6 +1180,21 @@ public Optional> timezone() { return Optional.ofNullable(this.timezone); } + /** + * Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + * + */ + @Import(name="upgradeStorageConfig") + private @Nullable Output upgradeStorageConfig; + + /** + * @return Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + * + */ + public Optional> upgradeStorageConfig() { + return Optional.ofNullable(this.upgradeStorageConfig); + } + /** * (Required unless a `snapshot_identifier` or `replicate_source_db` * is provided) Username for the master DB user. Cannot be specified for a replica. @@ -1283,6 +1298,7 @@ private InstanceArgs(InstanceArgs $) { this.storageType = $.storageType; this.tags = $.tags; this.timezone = $.timezone; + this.upgradeStorageConfig = $.upgradeStorageConfig; this.username = $.username; this.vpcSecurityGroupIds = $.vpcSecurityGroupIds; } @@ -2921,6 +2937,27 @@ public Builder timezone(String timezone) { return timezone(Output.of(timezone)); } + /** + * @param upgradeStorageConfig Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + * + * @return builder + * + */ + public Builder upgradeStorageConfig(@Nullable Output upgradeStorageConfig) { + $.upgradeStorageConfig = upgradeStorageConfig; + return this; + } + + /** + * @param upgradeStorageConfig Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + * + * @return builder + * + */ + public Builder upgradeStorageConfig(Boolean upgradeStorageConfig) { + return upgradeStorageConfig(Output.of(upgradeStorageConfig)); + } + /** * @param username (Required unless a `snapshot_identifier` or `replicate_source_db` * is provided) Username for the master DB user. Cannot be specified for a replica. diff --git a/sdk/java/src/main/java/com/pulumi/aws/rds/inputs/ClusterRestoreToPointInTimeArgs.java b/sdk/java/src/main/java/com/pulumi/aws/rds/inputs/ClusterRestoreToPointInTimeArgs.java index 9f69bda1c0f..eec9bf93a44 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/rds/inputs/ClusterRestoreToPointInTimeArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/rds/inputs/ClusterRestoreToPointInTimeArgs.java @@ -5,7 +5,6 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.Boolean; import java.lang.String; import java.util.Objects; @@ -53,15 +52,30 @@ public Optional> restoreType() { * Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. * */ - @Import(name="sourceClusterIdentifier", required=true) - private Output sourceClusterIdentifier; + @Import(name="sourceClusterIdentifier") + private @Nullable Output sourceClusterIdentifier; /** * @return Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. * */ - public Output sourceClusterIdentifier() { - return this.sourceClusterIdentifier; + public Optional> sourceClusterIdentifier() { + return Optional.ofNullable(this.sourceClusterIdentifier); + } + + /** + * Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + * + */ + @Import(name="sourceClusterResourceId") + private @Nullable Output sourceClusterResourceId; + + /** + * @return Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + * + */ + public Optional> sourceClusterResourceId() { + return Optional.ofNullable(this.sourceClusterResourceId); } /** @@ -85,6 +99,7 @@ private ClusterRestoreToPointInTimeArgs(ClusterRestoreToPointInTimeArgs $) { this.restoreToTime = $.restoreToTime; this.restoreType = $.restoreType; this.sourceClusterIdentifier = $.sourceClusterIdentifier; + this.sourceClusterResourceId = $.sourceClusterResourceId; this.useLatestRestorableTime = $.useLatestRestorableTime; } @@ -156,7 +171,7 @@ public Builder restoreType(String restoreType) { * @return builder * */ - public Builder sourceClusterIdentifier(Output sourceClusterIdentifier) { + public Builder sourceClusterIdentifier(@Nullable Output sourceClusterIdentifier) { $.sourceClusterIdentifier = sourceClusterIdentifier; return this; } @@ -171,6 +186,27 @@ public Builder sourceClusterIdentifier(String sourceClusterIdentifier) { return sourceClusterIdentifier(Output.of(sourceClusterIdentifier)); } + /** + * @param sourceClusterResourceId Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + * + * @return builder + * + */ + public Builder sourceClusterResourceId(@Nullable Output sourceClusterResourceId) { + $.sourceClusterResourceId = sourceClusterResourceId; + return this; + } + + /** + * @param sourceClusterResourceId Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + * + * @return builder + * + */ + public Builder sourceClusterResourceId(String sourceClusterResourceId) { + return sourceClusterResourceId(Output.of(sourceClusterResourceId)); + } + /** * @param useLatestRestorableTime Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restore_to_time`. * @@ -193,9 +229,6 @@ public Builder useLatestRestorableTime(Boolean useLatestRestorableTime) { } public ClusterRestoreToPointInTimeArgs build() { - if ($.sourceClusterIdentifier == null) { - throw new MissingRequiredPropertyException("ClusterRestoreToPointInTimeArgs", "sourceClusterIdentifier"); - } return $; } } diff --git a/sdk/java/src/main/java/com/pulumi/aws/rds/inputs/ClusterState.java b/sdk/java/src/main/java/com/pulumi/aws/rds/inputs/ClusterState.java index 8271a09d372..905351ab362 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/rds/inputs/ClusterState.java +++ b/sdk/java/src/main/java/com/pulumi/aws/rds/inputs/ClusterState.java @@ -745,14 +745,59 @@ public Optional> networkType() { } /** - * Port on which the DB accepts connections + * Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + * + */ + @Import(name="performanceInsightsEnabled") + private @Nullable Output performanceInsightsEnabled; + + /** + * @return Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + * + */ + public Optional> performanceInsightsEnabled() { + return Optional.ofNullable(this.performanceInsightsEnabled); + } + + /** + * Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + * + */ + @Import(name="performanceInsightsKmsKeyId") + private @Nullable Output performanceInsightsKmsKeyId; + + /** + * @return Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + * + */ + public Optional> performanceInsightsKmsKeyId() { + return Optional.ofNullable(this.performanceInsightsKmsKeyId); + } + + /** + * Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + * + */ + @Import(name="performanceInsightsRetentionPeriod") + private @Nullable Output performanceInsightsRetentionPeriod; + + /** + * @return Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + * + */ + public Optional> performanceInsightsRetentionPeriod() { + return Optional.ofNullable(this.performanceInsightsRetentionPeriod); + } + + /** + * Port on which the DB accepts connections. * */ @Import(name="port") private @Nullable Output port; /** - * @return Port on which the DB accepts connections + * @return Port on which the DB accepts connections. * */ public Optional> port() { @@ -760,14 +805,14 @@ public Optional> port() { } /** - * Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + * Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. * */ @Import(name="preferredBackupWindow") private @Nullable Output preferredBackupWindow; /** - * @return Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + * @return Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. * */ public Optional> preferredBackupWindow() { @@ -775,14 +820,14 @@ public Optional> preferredBackupWindow() { } /** - * Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + * Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` * */ @Import(name="preferredMaintenanceWindow") private @Nullable Output preferredMaintenanceWindow; /** - * @return Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + * @return Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` * */ public Optional> preferredMaintenanceWindow() { @@ -1051,6 +1096,9 @@ private ClusterState(ClusterState $) { this.masterUserSecrets = $.masterUserSecrets; this.masterUsername = $.masterUsername; this.networkType = $.networkType; + this.performanceInsightsEnabled = $.performanceInsightsEnabled; + this.performanceInsightsKmsKeyId = $.performanceInsightsKmsKeyId; + this.performanceInsightsRetentionPeriod = $.performanceInsightsRetentionPeriod; this.port = $.port; this.preferredBackupWindow = $.preferredBackupWindow; this.preferredMaintenanceWindow = $.preferredMaintenanceWindow; @@ -2181,7 +2229,70 @@ public Builder networkType(String networkType) { } /** - * @param port Port on which the DB accepts connections + * @param performanceInsightsEnabled Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + * + * @return builder + * + */ + public Builder performanceInsightsEnabled(@Nullable Output performanceInsightsEnabled) { + $.performanceInsightsEnabled = performanceInsightsEnabled; + return this; + } + + /** + * @param performanceInsightsEnabled Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + * + * @return builder + * + */ + public Builder performanceInsightsEnabled(Boolean performanceInsightsEnabled) { + return performanceInsightsEnabled(Output.of(performanceInsightsEnabled)); + } + + /** + * @param performanceInsightsKmsKeyId Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + * + * @return builder + * + */ + public Builder performanceInsightsKmsKeyId(@Nullable Output performanceInsightsKmsKeyId) { + $.performanceInsightsKmsKeyId = performanceInsightsKmsKeyId; + return this; + } + + /** + * @param performanceInsightsKmsKeyId Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + * + * @return builder + * + */ + public Builder performanceInsightsKmsKeyId(String performanceInsightsKmsKeyId) { + return performanceInsightsKmsKeyId(Output.of(performanceInsightsKmsKeyId)); + } + + /** + * @param performanceInsightsRetentionPeriod Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + * + * @return builder + * + */ + public Builder performanceInsightsRetentionPeriod(@Nullable Output performanceInsightsRetentionPeriod) { + $.performanceInsightsRetentionPeriod = performanceInsightsRetentionPeriod; + return this; + } + + /** + * @param performanceInsightsRetentionPeriod Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + * + * @return builder + * + */ + public Builder performanceInsightsRetentionPeriod(Integer performanceInsightsRetentionPeriod) { + return performanceInsightsRetentionPeriod(Output.of(performanceInsightsRetentionPeriod)); + } + + /** + * @param port Port on which the DB accepts connections. * * @return builder * @@ -2192,7 +2303,7 @@ public Builder port(@Nullable Output port) { } /** - * @param port Port on which the DB accepts connections + * @param port Port on which the DB accepts connections. * * @return builder * @@ -2202,7 +2313,7 @@ public Builder port(Integer port) { } /** - * @param preferredBackupWindow Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + * @param preferredBackupWindow Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. * * @return builder * @@ -2213,7 +2324,7 @@ public Builder preferredBackupWindow(@Nullable Output preferredBackupWin } /** - * @param preferredBackupWindow Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + * @param preferredBackupWindow Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. * * @return builder * @@ -2223,7 +2334,7 @@ public Builder preferredBackupWindow(String preferredBackupWindow) { } /** - * @param preferredMaintenanceWindow Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + * @param preferredMaintenanceWindow Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` * * @return builder * @@ -2234,7 +2345,7 @@ public Builder preferredMaintenanceWindow(@Nullable Output preferredMain } /** - * @param preferredMaintenanceWindow Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + * @param preferredMaintenanceWindow Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/aws/rds/inputs/InstanceState.java b/sdk/java/src/main/java/com/pulumi/aws/rds/inputs/InstanceState.java index f0b96992546..95fe1ca2058 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/rds/inputs/InstanceState.java +++ b/sdk/java/src/main/java/com/pulumi/aws/rds/inputs/InstanceState.java @@ -1361,6 +1361,21 @@ public Optional> timezone() { return Optional.ofNullable(this.timezone); } + /** + * Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + * + */ + @Import(name="upgradeStorageConfig") + private @Nullable Output upgradeStorageConfig; + + /** + * @return Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + * + */ + public Optional> upgradeStorageConfig() { + return Optional.ofNullable(this.upgradeStorageConfig); + } + /** * (Required unless a `snapshot_identifier` or `replicate_source_db` * is provided) Username for the master DB user. Cannot be specified for a replica. @@ -1476,6 +1491,7 @@ private InstanceState(InstanceState $) { this.tags = $.tags; this.tagsAll = $.tagsAll; this.timezone = $.timezone; + this.upgradeStorageConfig = $.upgradeStorageConfig; this.username = $.username; this.vpcSecurityGroupIds = $.vpcSecurityGroupIds; } @@ -3386,6 +3402,27 @@ public Builder timezone(String timezone) { return timezone(Output.of(timezone)); } + /** + * @param upgradeStorageConfig Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + * + * @return builder + * + */ + public Builder upgradeStorageConfig(@Nullable Output upgradeStorageConfig) { + $.upgradeStorageConfig = upgradeStorageConfig; + return this; + } + + /** + * @param upgradeStorageConfig Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + * + * @return builder + * + */ + public Builder upgradeStorageConfig(Boolean upgradeStorageConfig) { + return upgradeStorageConfig(Output.of(upgradeStorageConfig)); + } + /** * @param username (Required unless a `snapshot_identifier` or `replicate_source_db` * is provided) Username for the master DB user. Cannot be specified for a replica. diff --git a/sdk/java/src/main/java/com/pulumi/aws/rds/outputs/ClusterRestoreToPointInTime.java b/sdk/java/src/main/java/com/pulumi/aws/rds/outputs/ClusterRestoreToPointInTime.java index 013c65d677e..bc95dc98cb7 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/rds/outputs/ClusterRestoreToPointInTime.java +++ b/sdk/java/src/main/java/com/pulumi/aws/rds/outputs/ClusterRestoreToPointInTime.java @@ -4,7 +4,6 @@ package com.pulumi.aws.rds.outputs; import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; import java.lang.Boolean; import java.lang.String; import java.util.Objects; @@ -28,7 +27,12 @@ public final class ClusterRestoreToPointInTime { * @return Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. * */ - private String sourceClusterIdentifier; + private @Nullable String sourceClusterIdentifier; + /** + * @return Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + * + */ + private @Nullable String sourceClusterResourceId; /** * @return Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restore_to_time`. * @@ -55,8 +59,15 @@ public Optional restoreType() { * @return Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. * */ - public String sourceClusterIdentifier() { - return this.sourceClusterIdentifier; + public Optional sourceClusterIdentifier() { + return Optional.ofNullable(this.sourceClusterIdentifier); + } + /** + * @return Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + * + */ + public Optional sourceClusterResourceId() { + return Optional.ofNullable(this.sourceClusterResourceId); } /** * @return Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restore_to_time`. @@ -77,7 +88,8 @@ public static Builder builder(ClusterRestoreToPointInTime defaults) { public static final class Builder { private @Nullable String restoreToTime; private @Nullable String restoreType; - private String sourceClusterIdentifier; + private @Nullable String sourceClusterIdentifier; + private @Nullable String sourceClusterResourceId; private @Nullable Boolean useLatestRestorableTime; public Builder() {} public Builder(ClusterRestoreToPointInTime defaults) { @@ -85,6 +97,7 @@ public Builder(ClusterRestoreToPointInTime defaults) { this.restoreToTime = defaults.restoreToTime; this.restoreType = defaults.restoreType; this.sourceClusterIdentifier = defaults.sourceClusterIdentifier; + this.sourceClusterResourceId = defaults.sourceClusterResourceId; this.useLatestRestorableTime = defaults.useLatestRestorableTime; } @@ -101,14 +114,18 @@ public Builder restoreType(@Nullable String restoreType) { return this; } @CustomType.Setter - public Builder sourceClusterIdentifier(String sourceClusterIdentifier) { - if (sourceClusterIdentifier == null) { - throw new MissingRequiredPropertyException("ClusterRestoreToPointInTime", "sourceClusterIdentifier"); - } + public Builder sourceClusterIdentifier(@Nullable String sourceClusterIdentifier) { + this.sourceClusterIdentifier = sourceClusterIdentifier; return this; } @CustomType.Setter + public Builder sourceClusterResourceId(@Nullable String sourceClusterResourceId) { + + this.sourceClusterResourceId = sourceClusterResourceId; + return this; + } + @CustomType.Setter public Builder useLatestRestorableTime(@Nullable Boolean useLatestRestorableTime) { this.useLatestRestorableTime = useLatestRestorableTime; @@ -119,6 +136,7 @@ public ClusterRestoreToPointInTime build() { _resultValue.restoreToTime = restoreToTime; _resultValue.restoreType = restoreType; _resultValue.sourceClusterIdentifier = sourceClusterIdentifier; + _resultValue.sourceClusterResourceId = sourceClusterResourceId; _resultValue.useLatestRestorableTime = useLatestRestorableTime; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/aws/s3/BucketNotification.java b/sdk/java/src/main/java/com/pulumi/aws/s3/BucketNotification.java index f7b62cb340c..052b238e7bc 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/s3/BucketNotification.java +++ b/sdk/java/src/main/java/com/pulumi/aws/s3/BucketNotification.java @@ -22,7 +22,7 @@ /** * Manages a S3 Bucket Notification Configuration. For additional information, see the [Configuring S3 Event Notifications section in the Amazon S3 Developer Guide](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). * - * > **NOTE:** S3 Buckets only support a single notification configuration. Declaring multiple `aws.s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. See the example "Trigger multiple Lambda functions" for an option. + * > **NOTE:** S3 Buckets only support a single notification configuration resource. Declaring multiple `aws.s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. This resource will overwrite any existing event notifications configured for the S3 bucket it's associated with. See the example "Trigger multiple Lambda functions" for an option of how to configure multiple triggers within this resource. * * > This resource cannot be used with S3 directory buckets. * diff --git a/sdk/java/src/main/java/com/pulumi/aws/sagemaker/inputs/GetPrebuiltEcrImageArgs.java b/sdk/java/src/main/java/com/pulumi/aws/sagemaker/inputs/GetPrebuiltEcrImageArgs.java index e7a8a91b366..0d5d0b68991 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/sagemaker/inputs/GetPrebuiltEcrImageArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/sagemaker/inputs/GetPrebuiltEcrImageArgs.java @@ -62,14 +62,14 @@ public Optional> region() { } /** - * Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + * Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. * */ @Import(name="repositoryName", required=true) private Output repositoryName; /** - * @return Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + * @return Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. * */ public Output repositoryName() { @@ -167,7 +167,7 @@ public Builder region(String region) { } /** - * @param repositoryName Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + * @param repositoryName Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. * * @return builder * @@ -178,7 +178,7 @@ public Builder repositoryName(Output repositoryName) { } /** - * @param repositoryName Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + * @param repositoryName Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/aws/sagemaker/inputs/GetPrebuiltEcrImagePlainArgs.java b/sdk/java/src/main/java/com/pulumi/aws/sagemaker/inputs/GetPrebuiltEcrImagePlainArgs.java index 279105ff9af..e02b07fa408 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/sagemaker/inputs/GetPrebuiltEcrImagePlainArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/sagemaker/inputs/GetPrebuiltEcrImagePlainArgs.java @@ -61,14 +61,14 @@ public Optional region() { } /** - * Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + * Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. * */ @Import(name="repositoryName", required=true) private String repositoryName; /** - * @return Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + * @return Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. * */ public String repositoryName() { @@ -136,7 +136,7 @@ public Builder region(@Nullable String region) { } /** - * @param repositoryName Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + * @param repositoryName Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/aws/sfn/Activity.java b/sdk/java/src/main/java/com/pulumi/aws/sfn/Activity.java index 2c1c851f50c..16f8504ead4 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/sfn/Activity.java +++ b/sdk/java/src/main/java/com/pulumi/aws/sfn/Activity.java @@ -6,6 +6,7 @@ import com.pulumi.aws.Utilities; import com.pulumi.aws.sfn.ActivityArgs; import com.pulumi.aws.sfn.inputs.ActivityState; +import com.pulumi.aws.sfn.outputs.ActivityEncryptionConfiguration; import com.pulumi.core.Output; import com.pulumi.core.annotations.Export; import com.pulumi.core.annotations.ResourceType; @@ -20,6 +21,45 @@ * * ## Example Usage * + * ### Basic + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.sfn.Activity;
+ * import com.pulumi.aws.sfn.ActivityArgs;
+ * 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 sfnActivity = new Activity("sfnActivity", ActivityArgs.builder()
+ *             .name("my-activity")
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ### Encryption + * + * > *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. + * * <!--Start PulumiCodeChooser --> *
  * {@code
@@ -30,6 +70,7 @@
  * import com.pulumi.core.Output;
  * import com.pulumi.aws.sfn.Activity;
  * import com.pulumi.aws.sfn.ActivityArgs;
+ * import com.pulumi.aws.sfn.inputs.ActivityEncryptionConfigurationArgs;
  * import java.util.List;
  * import java.util.ArrayList;
  * import java.util.Map;
@@ -45,6 +86,11 @@
  *     public static void stack(Context ctx) {
  *         var sfnActivity = new Activity("sfnActivity", ActivityArgs.builder()
  *             .name("my-activity")
+ *             .encryptionConfiguration(ActivityEncryptionConfigurationArgs.builder()
+ *                 .kmsKeyId(kmsKeyForSfn.arn())
+ *                 .type("CUSTOMER_MANAGED_KMS_KEY")
+ *                 .kmsDataKeyReusePeriodSeconds(900)
+ *                 .build())
  *             .build());
  * 
  *     }
@@ -78,6 +124,20 @@ public class Activity extends com.pulumi.resources.CustomResource {
     public Output creationDate() {
         return this.creationDate;
     }
+    /**
+     * Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide.
+     * 
+     */
+    @Export(name="encryptionConfiguration", refs={ActivityEncryptionConfiguration.class}, tree="[0]")
+    private Output encryptionConfiguration;
+
+    /**
+     * @return Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide.
+     * 
+     */
+    public Output encryptionConfiguration() {
+        return this.encryptionConfiguration;
+    }
     /**
      * The name of the activity to create.
      * 
diff --git a/sdk/java/src/main/java/com/pulumi/aws/sfn/ActivityArgs.java b/sdk/java/src/main/java/com/pulumi/aws/sfn/ActivityArgs.java
index 0e7011ce1e1..e8bed3b45db 100644
--- a/sdk/java/src/main/java/com/pulumi/aws/sfn/ActivityArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/aws/sfn/ActivityArgs.java
@@ -3,6 +3,7 @@
 
 package com.pulumi.aws.sfn;
 
+import com.pulumi.aws.sfn.inputs.ActivityEncryptionConfigurationArgs;
 import com.pulumi.core.Output;
 import com.pulumi.core.annotations.Import;
 import java.lang.String;
@@ -16,6 +17,21 @@ public final class ActivityArgs extends com.pulumi.resources.ResourceArgs {
 
     public static final ActivityArgs Empty = new ActivityArgs();
 
+    /**
+     * Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide.
+     * 
+     */
+    @Import(name="encryptionConfiguration")
+    private @Nullable Output encryptionConfiguration;
+
+    /**
+     * @return Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide.
+     * 
+     */
+    public Optional> encryptionConfiguration() {
+        return Optional.ofNullable(this.encryptionConfiguration);
+    }
+
     /**
      * The name of the activity to create.
      * 
@@ -49,6 +65,7 @@ public Optional>> tags() {
     private ActivityArgs() {}
 
     private ActivityArgs(ActivityArgs $) {
+        this.encryptionConfiguration = $.encryptionConfiguration;
         this.name = $.name;
         this.tags = $.tags;
     }
@@ -71,6 +88,27 @@ public Builder(ActivityArgs defaults) {
             $ = new ActivityArgs(Objects.requireNonNull(defaults));
         }
 
+        /**
+         * @param encryptionConfiguration Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder encryptionConfiguration(@Nullable Output encryptionConfiguration) {
+            $.encryptionConfiguration = encryptionConfiguration;
+            return this;
+        }
+
+        /**
+         * @param encryptionConfiguration Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder encryptionConfiguration(ActivityEncryptionConfigurationArgs encryptionConfiguration) {
+            return encryptionConfiguration(Output.of(encryptionConfiguration));
+        }
+
         /**
          * @param name The name of the activity to create.
          * 
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 bd4a9a87b78..61d833b4337 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
@@ -6,6 +6,7 @@
 import com.pulumi.aws.Utilities;
 import com.pulumi.aws.sfn.StateMachineArgs;
 import com.pulumi.aws.sfn.inputs.StateMachineState;
+import com.pulumi.aws.sfn.outputs.StateMachineEncryptionConfiguration;
 import com.pulumi.aws.sfn.outputs.StateMachineLoggingConfiguration;
 import com.pulumi.aws.sfn.outputs.StateMachineTracingConfiguration;
 import com.pulumi.core.Output;
@@ -234,6 +235,64 @@
  * 
* <!--End PulumiCodeChooser --> * + * ### Encryption + * + * > *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. + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.sfn.StateMachine;
+ * import com.pulumi.aws.sfn.StateMachineArgs;
+ * import com.pulumi.aws.sfn.inputs.StateMachineEncryptionConfigurationArgs;
+ * 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 sfnStateMachine = new StateMachine("sfnStateMachine", StateMachineArgs.builder()
+ *             .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": "%s",
+ *       "End": true
+ *     }
+ *   }
+ * }
+ * ", lambda.arn()))
+ *             .encryptionConfiguration(StateMachineEncryptionConfigurationArgs.builder()
+ *                 .kmsKeyId(kmsKeyForSfn.arn())
+ *                 .type("CUSTOMER_MANAGED_KMS_KEY")
+ *                 .kmsDataKeyReusePeriodSeconds(900)
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * * ## Import * * Using `pulumi import`, import State Machines using the `arn`. For example: @@ -293,6 +352,20 @@ public Output definition() { public Output description() { return this.description; } + /** + * Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + * + */ + @Export(name="encryptionConfiguration", refs={StateMachineEncryptionConfiguration.class}, tree="[0]") + private Output encryptionConfiguration; + + /** + * @return Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + * + */ + public Output encryptionConfiguration() { + return this.encryptionConfiguration; + } /** * Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. * diff --git a/sdk/java/src/main/java/com/pulumi/aws/sfn/StateMachineArgs.java b/sdk/java/src/main/java/com/pulumi/aws/sfn/StateMachineArgs.java index 84b056b7af1..4191488301b 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/sfn/StateMachineArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/sfn/StateMachineArgs.java @@ -3,6 +3,7 @@ package com.pulumi.aws.sfn; +import com.pulumi.aws.sfn.inputs.StateMachineEncryptionConfigurationArgs; import com.pulumi.aws.sfn.inputs.StateMachineLoggingConfigurationArgs; import com.pulumi.aws.sfn.inputs.StateMachineTracingConfigurationArgs; import com.pulumi.core.Output; @@ -35,6 +36,21 @@ public Output definition() { return this.definition; } + /** + * Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + * + */ + @Import(name="encryptionConfiguration") + private @Nullable Output encryptionConfiguration; + + /** + * @return Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + * + */ + public Optional> encryptionConfiguration() { + return Optional.ofNullable(this.encryptionConfiguration); + } + /** * Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. * @@ -159,6 +175,7 @@ private StateMachineArgs() {} private StateMachineArgs(StateMachineArgs $) { this.definition = $.definition; + this.encryptionConfiguration = $.encryptionConfiguration; this.loggingConfiguration = $.loggingConfiguration; this.name = $.name; this.namePrefix = $.namePrefix; @@ -208,6 +225,27 @@ public Builder definition(String definition) { return definition(Output.of(definition)); } + /** + * @param encryptionConfiguration Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + * + * @return builder + * + */ + public Builder encryptionConfiguration(@Nullable Output encryptionConfiguration) { + $.encryptionConfiguration = encryptionConfiguration; + return this; + } + + /** + * @param encryptionConfiguration Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + * + * @return builder + * + */ + public Builder encryptionConfiguration(StateMachineEncryptionConfigurationArgs encryptionConfiguration) { + return encryptionConfiguration(Output.of(encryptionConfiguration)); + } + /** * @param loggingConfiguration Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. * diff --git a/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/ActivityEncryptionConfigurationArgs.java b/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/ActivityEncryptionConfigurationArgs.java new file mode 100644 index 00000000000..f738415051c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/ActivityEncryptionConfigurationArgs.java @@ -0,0 +1,158 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.sfn.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ActivityEncryptionConfigurationArgs extends com.pulumi.resources.ResourceArgs { + + public static final ActivityEncryptionConfigurationArgs Empty = new ActivityEncryptionConfigurationArgs(); + + /** + * Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + * + */ + @Import(name="kmsDataKeyReusePeriodSeconds") + private @Nullable Output kmsDataKeyReusePeriodSeconds; + + /** + * @return Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + * + */ + public Optional> kmsDataKeyReusePeriodSeconds() { + return Optional.ofNullable(this.kmsDataKeyReusePeriodSeconds); + } + + /** + * The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + * + */ + @Import(name="kmsKeyId") + private @Nullable Output kmsKeyId; + + /** + * @return The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + * + */ + public Optional> kmsKeyId() { + return Optional.ofNullable(this.kmsKeyId); + } + + /** + * The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + * + */ + @Import(name="type") + private @Nullable Output type; + + /** + * @return The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + * + */ + public Optional> type() { + return Optional.ofNullable(this.type); + } + + private ActivityEncryptionConfigurationArgs() {} + + private ActivityEncryptionConfigurationArgs(ActivityEncryptionConfigurationArgs $) { + this.kmsDataKeyReusePeriodSeconds = $.kmsDataKeyReusePeriodSeconds; + this.kmsKeyId = $.kmsKeyId; + this.type = $.type; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ActivityEncryptionConfigurationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ActivityEncryptionConfigurationArgs $; + + public Builder() { + $ = new ActivityEncryptionConfigurationArgs(); + } + + public Builder(ActivityEncryptionConfigurationArgs defaults) { + $ = new ActivityEncryptionConfigurationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param kmsDataKeyReusePeriodSeconds Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + * + * @return builder + * + */ + public Builder kmsDataKeyReusePeriodSeconds(@Nullable Output kmsDataKeyReusePeriodSeconds) { + $.kmsDataKeyReusePeriodSeconds = kmsDataKeyReusePeriodSeconds; + return this; + } + + /** + * @param kmsDataKeyReusePeriodSeconds Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + * + * @return builder + * + */ + public Builder kmsDataKeyReusePeriodSeconds(Integer kmsDataKeyReusePeriodSeconds) { + return kmsDataKeyReusePeriodSeconds(Output.of(kmsDataKeyReusePeriodSeconds)); + } + + /** + * @param kmsKeyId The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + * + * @return builder + * + */ + public Builder kmsKeyId(@Nullable Output kmsKeyId) { + $.kmsKeyId = kmsKeyId; + return this; + } + + /** + * @param kmsKeyId The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + * + * @return builder + * + */ + public Builder kmsKeyId(String kmsKeyId) { + return kmsKeyId(Output.of(kmsKeyId)); + } + + /** + * @param type The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + * + * @return builder + * + */ + public Builder type(@Nullable Output type) { + $.type = type; + return this; + } + + /** + * @param type The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + * + * @return builder + * + */ + public Builder type(String type) { + return type(Output.of(type)); + } + + public ActivityEncryptionConfigurationArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/ActivityState.java b/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/ActivityState.java index 60310537fca..4b7c5fcffd1 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/ActivityState.java +++ b/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/ActivityState.java @@ -3,6 +3,7 @@ package com.pulumi.aws.sfn.inputs; +import com.pulumi.aws.sfn.inputs.ActivityEncryptionConfigurationArgs; import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; import java.lang.String; @@ -31,6 +32,21 @@ public Optional> creationDate() { return Optional.ofNullable(this.creationDate); } + /** + * Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + * + */ + @Import(name="encryptionConfiguration") + private @Nullable Output encryptionConfiguration; + + /** + * @return Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + * + */ + public Optional> encryptionConfiguration() { + return Optional.ofNullable(this.encryptionConfiguration); + } + /** * The name of the activity to create. * @@ -88,6 +104,7 @@ private ActivityState() {} private ActivityState(ActivityState $) { this.creationDate = $.creationDate; + this.encryptionConfiguration = $.encryptionConfiguration; this.name = $.name; this.tags = $.tags; this.tagsAll = $.tagsAll; @@ -132,6 +149,27 @@ public Builder creationDate(String creationDate) { return creationDate(Output.of(creationDate)); } + /** + * @param encryptionConfiguration Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + * + * @return builder + * + */ + public Builder encryptionConfiguration(@Nullable Output encryptionConfiguration) { + $.encryptionConfiguration = encryptionConfiguration; + return this; + } + + /** + * @param encryptionConfiguration Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + * + * @return builder + * + */ + public Builder encryptionConfiguration(ActivityEncryptionConfigurationArgs encryptionConfiguration) { + return encryptionConfiguration(Output.of(encryptionConfiguration)); + } + /** * @param name The name of the activity to create. * diff --git a/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/StateMachineEncryptionConfigurationArgs.java b/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/StateMachineEncryptionConfigurationArgs.java new file mode 100644 index 00000000000..4e8dda03ffa --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/StateMachineEncryptionConfigurationArgs.java @@ -0,0 +1,158 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.sfn.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class StateMachineEncryptionConfigurationArgs extends com.pulumi.resources.ResourceArgs { + + public static final StateMachineEncryptionConfigurationArgs Empty = new StateMachineEncryptionConfigurationArgs(); + + /** + * Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + * + */ + @Import(name="kmsDataKeyReusePeriodSeconds") + private @Nullable Output kmsDataKeyReusePeriodSeconds; + + /** + * @return Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + * + */ + public Optional> kmsDataKeyReusePeriodSeconds() { + return Optional.ofNullable(this.kmsDataKeyReusePeriodSeconds); + } + + /** + * The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + * + */ + @Import(name="kmsKeyId") + private @Nullable Output kmsKeyId; + + /** + * @return The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + * + */ + public Optional> kmsKeyId() { + return Optional.ofNullable(this.kmsKeyId); + } + + /** + * The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + * + */ + @Import(name="type") + private @Nullable Output type; + + /** + * @return The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + * + */ + public Optional> type() { + return Optional.ofNullable(this.type); + } + + private StateMachineEncryptionConfigurationArgs() {} + + private StateMachineEncryptionConfigurationArgs(StateMachineEncryptionConfigurationArgs $) { + this.kmsDataKeyReusePeriodSeconds = $.kmsDataKeyReusePeriodSeconds; + this.kmsKeyId = $.kmsKeyId; + this.type = $.type; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(StateMachineEncryptionConfigurationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private StateMachineEncryptionConfigurationArgs $; + + public Builder() { + $ = new StateMachineEncryptionConfigurationArgs(); + } + + public Builder(StateMachineEncryptionConfigurationArgs defaults) { + $ = new StateMachineEncryptionConfigurationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param kmsDataKeyReusePeriodSeconds Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + * + * @return builder + * + */ + public Builder kmsDataKeyReusePeriodSeconds(@Nullable Output kmsDataKeyReusePeriodSeconds) { + $.kmsDataKeyReusePeriodSeconds = kmsDataKeyReusePeriodSeconds; + return this; + } + + /** + * @param kmsDataKeyReusePeriodSeconds Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + * + * @return builder + * + */ + public Builder kmsDataKeyReusePeriodSeconds(Integer kmsDataKeyReusePeriodSeconds) { + return kmsDataKeyReusePeriodSeconds(Output.of(kmsDataKeyReusePeriodSeconds)); + } + + /** + * @param kmsKeyId The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + * + * @return builder + * + */ + public Builder kmsKeyId(@Nullable Output kmsKeyId) { + $.kmsKeyId = kmsKeyId; + return this; + } + + /** + * @param kmsKeyId The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + * + * @return builder + * + */ + public Builder kmsKeyId(String kmsKeyId) { + return kmsKeyId(Output.of(kmsKeyId)); + } + + /** + * @param type The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + * + * @return builder + * + */ + public Builder type(@Nullable Output type) { + $.type = type; + return this; + } + + /** + * @param type The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + * + * @return builder + * + */ + public Builder type(String type) { + return type(Output.of(type)); + } + + public StateMachineEncryptionConfigurationArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/StateMachineState.java b/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/StateMachineState.java index 8afc575ae3c..c56ab90bc4a 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/StateMachineState.java +++ b/sdk/java/src/main/java/com/pulumi/aws/sfn/inputs/StateMachineState.java @@ -3,6 +3,7 @@ package com.pulumi.aws.sfn.inputs; +import com.pulumi.aws.sfn.inputs.StateMachineEncryptionConfigurationArgs; import com.pulumi.aws.sfn.inputs.StateMachineLoggingConfigurationArgs; import com.pulumi.aws.sfn.inputs.StateMachineTracingConfigurationArgs; import com.pulumi.core.Output; @@ -71,6 +72,21 @@ public Optional> description() { return Optional.ofNullable(this.description); } + /** + * Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + * + */ + @Import(name="encryptionConfiguration") + private @Nullable Output encryptionConfiguration; + + /** + * @return Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + * + */ + public Optional> encryptionConfiguration() { + return Optional.ofNullable(this.encryptionConfiguration); + } + /** * Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. * @@ -265,6 +281,7 @@ private StateMachineState(StateMachineState $) { this.creationDate = $.creationDate; this.definition = $.definition; this.description = $.description; + this.encryptionConfiguration = $.encryptionConfiguration; this.loggingConfiguration = $.loggingConfiguration; this.name = $.name; this.namePrefix = $.namePrefix; @@ -370,6 +387,27 @@ public Builder description(String description) { return description(Output.of(description)); } + /** + * @param encryptionConfiguration Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + * + * @return builder + * + */ + public Builder encryptionConfiguration(@Nullable Output encryptionConfiguration) { + $.encryptionConfiguration = encryptionConfiguration; + return this; + } + + /** + * @param encryptionConfiguration Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + * + * @return builder + * + */ + public Builder encryptionConfiguration(StateMachineEncryptionConfigurationArgs encryptionConfiguration) { + return encryptionConfiguration(Output.of(encryptionConfiguration)); + } + /** * @param loggingConfiguration Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. * diff --git a/sdk/java/src/main/java/com/pulumi/aws/sfn/outputs/ActivityEncryptionConfiguration.java b/sdk/java/src/main/java/com/pulumi/aws/sfn/outputs/ActivityEncryptionConfiguration.java new file mode 100644 index 00000000000..cdeb2dd5cf0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/sfn/outputs/ActivityEncryptionConfiguration.java @@ -0,0 +1,100 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.sfn.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class ActivityEncryptionConfiguration { + /** + * @return Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + * + */ + private @Nullable Integer kmsDataKeyReusePeriodSeconds; + /** + * @return The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + * + */ + private @Nullable String kmsKeyId; + /** + * @return The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + * + */ + private @Nullable String type; + + private ActivityEncryptionConfiguration() {} + /** + * @return Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + * + */ + public Optional kmsDataKeyReusePeriodSeconds() { + return Optional.ofNullable(this.kmsDataKeyReusePeriodSeconds); + } + /** + * @return The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + * + */ + public Optional kmsKeyId() { + return Optional.ofNullable(this.kmsKeyId); + } + /** + * @return The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + * + */ + public Optional type() { + return Optional.ofNullable(this.type); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ActivityEncryptionConfiguration defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Integer kmsDataKeyReusePeriodSeconds; + private @Nullable String kmsKeyId; + private @Nullable String type; + public Builder() {} + public Builder(ActivityEncryptionConfiguration defaults) { + Objects.requireNonNull(defaults); + this.kmsDataKeyReusePeriodSeconds = defaults.kmsDataKeyReusePeriodSeconds; + this.kmsKeyId = defaults.kmsKeyId; + this.type = defaults.type; + } + + @CustomType.Setter + public Builder kmsDataKeyReusePeriodSeconds(@Nullable Integer kmsDataKeyReusePeriodSeconds) { + + this.kmsDataKeyReusePeriodSeconds = kmsDataKeyReusePeriodSeconds; + return this; + } + @CustomType.Setter + public Builder kmsKeyId(@Nullable String kmsKeyId) { + + this.kmsKeyId = kmsKeyId; + return this; + } + @CustomType.Setter + public Builder type(@Nullable String type) { + + this.type = type; + return this; + } + public ActivityEncryptionConfiguration build() { + final var _resultValue = new ActivityEncryptionConfiguration(); + _resultValue.kmsDataKeyReusePeriodSeconds = kmsDataKeyReusePeriodSeconds; + _resultValue.kmsKeyId = kmsKeyId; + _resultValue.type = type; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/sfn/outputs/StateMachineEncryptionConfiguration.java b/sdk/java/src/main/java/com/pulumi/aws/sfn/outputs/StateMachineEncryptionConfiguration.java new file mode 100644 index 00000000000..c2694ce8c62 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/sfn/outputs/StateMachineEncryptionConfiguration.java @@ -0,0 +1,100 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.sfn.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class StateMachineEncryptionConfiguration { + /** + * @return Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + * + */ + private @Nullable Integer kmsDataKeyReusePeriodSeconds; + /** + * @return The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + * + */ + private @Nullable String kmsKeyId; + /** + * @return The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + * + */ + private @Nullable String type; + + private StateMachineEncryptionConfiguration() {} + /** + * @return Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + * + */ + public Optional kmsDataKeyReusePeriodSeconds() { + return Optional.ofNullable(this.kmsDataKeyReusePeriodSeconds); + } + /** + * @return The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + * + */ + public Optional kmsKeyId() { + return Optional.ofNullable(this.kmsKeyId); + } + /** + * @return The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + * + */ + public Optional type() { + return Optional.ofNullable(this.type); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(StateMachineEncryptionConfiguration defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Integer kmsDataKeyReusePeriodSeconds; + private @Nullable String kmsKeyId; + private @Nullable String type; + public Builder() {} + public Builder(StateMachineEncryptionConfiguration defaults) { + Objects.requireNonNull(defaults); + this.kmsDataKeyReusePeriodSeconds = defaults.kmsDataKeyReusePeriodSeconds; + this.kmsKeyId = defaults.kmsKeyId; + this.type = defaults.type; + } + + @CustomType.Setter + public Builder kmsDataKeyReusePeriodSeconds(@Nullable Integer kmsDataKeyReusePeriodSeconds) { + + this.kmsDataKeyReusePeriodSeconds = kmsDataKeyReusePeriodSeconds; + return this; + } + @CustomType.Setter + public Builder kmsKeyId(@Nullable String kmsKeyId) { + + this.kmsKeyId = kmsKeyId; + return this; + } + @CustomType.Setter + public Builder type(@Nullable String type) { + + this.type = type; + return this; + } + public StateMachineEncryptionConfiguration build() { + final var _resultValue = new StateMachineEncryptionConfiguration(); + _resultValue.kmsDataKeyReusePeriodSeconds = kmsDataKeyReusePeriodSeconds; + _resultValue.kmsKeyId = kmsKeyId; + _resultValue.type = type; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/DbInstance.java b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/DbInstance.java new file mode 100644 index 00000000000..a9a9c058dd1 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/DbInstance.java @@ -0,0 +1,648 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.timestreaminfluxdb; + +import com.pulumi.aws.Utilities; +import com.pulumi.aws.timestreaminfluxdb.DbInstanceArgs; +import com.pulumi.aws.timestreaminfluxdb.inputs.DbInstanceState; +import com.pulumi.aws.timestreaminfluxdb.outputs.DbInstanceLogDeliveryConfiguration; +import com.pulumi.aws.timestreaminfluxdb.outputs.DbInstanceTimeouts; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * Resource for managing an Amazon Timestream for InfluxDB Db Instance. + * + * ## Example Usage + * + * ### Basic Usage + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.timestreaminfluxdb.DbInstance;
+ * import com.pulumi.aws.timestreaminfluxdb.DbInstanceArgs;
+ * 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 DbInstance("example", DbInstanceArgs.builder()
+ *             .allocatedStorage(20)
+ *             .bucket("example-bucket-name")
+ *             .dbInstanceType("db.influx.medium")
+ *             .username("admin")
+ *             .password("example-password")
+ *             .organization("organization")
+ *             .vpcSubnetIds(exampleid)
+ *             .vpcSecurityGroupIds(exampleAwsSecurityGroup.id())
+ *             .name("example-db-instance")
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ### Usage with Prerequisite Resources + * + * All Timestream for InfluxDB instances require a VPC, subnet, and security group. The following example shows how these prerequisite resources can be created and used with `aws.timestreaminfluxdb.DbInstance`. + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.ec2.Vpc;
+ * import com.pulumi.aws.ec2.VpcArgs;
+ * import com.pulumi.aws.ec2.Subnet;
+ * import com.pulumi.aws.ec2.SubnetArgs;
+ * import com.pulumi.aws.ec2.SecurityGroup;
+ * import com.pulumi.aws.ec2.SecurityGroupArgs;
+ * import com.pulumi.aws.timestreaminfluxdb.DbInstance;
+ * import com.pulumi.aws.timestreaminfluxdb.DbInstanceArgs;
+ * 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 Vpc("example", VpcArgs.builder()
+ *             .cidrBlock("10.0.0.0/16")
+ *             .build());
+ * 
+ *         var exampleSubnet = new Subnet("exampleSubnet", SubnetArgs.builder()
+ *             .vpcId(example.id())
+ *             .cidrBlock("10.0.1.0/24")
+ *             .build());
+ * 
+ *         var exampleSecurityGroup = new SecurityGroup("exampleSecurityGroup", SecurityGroupArgs.builder()
+ *             .name("example")
+ *             .vpcId(example.id())
+ *             .build());
+ * 
+ *         var exampleDbInstance = new DbInstance("exampleDbInstance", DbInstanceArgs.builder()
+ *             .allocatedStorage(20)
+ *             .bucket("example-bucket-name")
+ *             .dbInstanceType("db.influx.medium")
+ *             .username("admin")
+ *             .password("example-password")
+ *             .organization("organization")
+ *             .vpcSubnetIds(exampleSubnet.id())
+ *             .vpcSecurityGroupIds(exampleSecurityGroup.id())
+ *             .name("example-db-instance")
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ### Usage with S3 Log Delivery Enabled + * + * You can use an S3 bucket to store logs generated by your Timestream for InfluxDB instance. The following example shows what resources and arguments are required to configure an S3 bucket for logging, including the IAM policy that needs to be set in order to allow Timestream for InfluxDB to place logs in your S3 bucket. The configuration of the required VPC, security group, and subnet have been left out of the example for brevity. + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.s3.BucketV2;
+ * import com.pulumi.aws.s3.BucketV2Args;
+ * import com.pulumi.aws.iam.IamFunctions;
+ * import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
+ * import com.pulumi.aws.s3.BucketPolicy;
+ * import com.pulumi.aws.s3.BucketPolicyArgs;
+ * import com.pulumi.aws.timestreaminfluxdb.DbInstance;
+ * import com.pulumi.aws.timestreaminfluxdb.DbInstanceArgs;
+ * import com.pulumi.aws.timestreaminfluxdb.inputs.DbInstanceLogDeliveryConfigurationArgs;
+ * import com.pulumi.aws.timestreaminfluxdb.inputs.DbInstanceLogDeliveryConfigurationS3ConfigurationArgs;
+ * 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 exampleBucketV2 = new BucketV2("exampleBucketV2", BucketV2Args.builder()
+ *             .bucket("example-s3-bucket")
+ *             .build());
+ * 
+ *         final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
+ *             .statements(GetPolicyDocumentStatementArgs.builder()
+ *                 .actions("s3:PutObject")
+ *                 .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
+ *                     .type("Service")
+ *                     .identifiers("timestream-influxdb.amazonaws.com")
+ *                     .build())
+ *                 .resources(exampleBucketV2.arn().applyValue(arn -> String.format("%s/*", arn)))
+ *                 .build())
+ *             .build());
+ * 
+ *         var exampleBucketPolicy = new BucketPolicy("exampleBucketPolicy", BucketPolicyArgs.builder()
+ *             .bucket(exampleBucketV2.id())
+ *             .policy(example.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult).applyValue(example -> example.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult.json())))
+ *             .build());
+ * 
+ *         var exampleDbInstance = new DbInstance("exampleDbInstance", DbInstanceArgs.builder()
+ *             .allocatedStorage(20)
+ *             .bucket("example-bucket-name")
+ *             .dbInstanceType("db.influx.medium")
+ *             .username("admin")
+ *             .password("example-password")
+ *             .organization("organization")
+ *             .vpcSubnetIds(exampleAwsSubnet.id())
+ *             .vpcSecurityGroupIds(exampleAwsSecurityGroup.id())
+ *             .name("example-db-instance")
+ *             .logDeliveryConfiguration(DbInstanceLogDeliveryConfigurationArgs.builder()
+ *                 .s3Configuration(DbInstanceLogDeliveryConfigurationS3ConfigurationArgs.builder()
+ *                     .bucketName(exampleBucketV2.name())
+ *                     .enabled(true)
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ### Usage with MultiAZ Deployment + * + * To use multi-region availability, at least two subnets must be created in different availability zones and used with your Timestream for InfluxDB instance. + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.aws.ec2.Subnet;
+ * import com.pulumi.aws.ec2.SubnetArgs;
+ * import com.pulumi.aws.timestreaminfluxdb.DbInstance;
+ * import com.pulumi.aws.timestreaminfluxdb.DbInstanceArgs;
+ * 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 example1 = new Subnet("example1", SubnetArgs.builder()
+ *             .vpcId(exampleAwsVpc.id())
+ *             .cidrBlock("10.0.1.0/24")
+ *             .availabilityZone("us-west-2a")
+ *             .build());
+ * 
+ *         var example2 = new Subnet("example2", SubnetArgs.builder()
+ *             .vpcId(exampleAwsVpc.id())
+ *             .cidrBlock("10.0.2.0/24")
+ *             .availabilityZone("us-west-2b")
+ *             .build());
+ * 
+ *         var example = new DbInstance("example", DbInstanceArgs.builder()
+ *             .allocatedStorage(20)
+ *             .bucket("example-bucket-name")
+ *             .dbInstanceType("db.influx.medium")
+ *             .deploymentType("WITH_MULTIAZ_STANDBY")
+ *             .username("admin")
+ *             .password("example-password")
+ *             .organization("organization")
+ *             .vpcSubnetIds(            
+ *                 example1.id(),
+ *                 example2.id())
+ *             .vpcSecurityGroupIds(exampleAwsSecurityGroup.id())
+ *             .name("example-db-instance")
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * Using `pulumi import`, import Timestream for InfluxDB Db Instance using its identifier. For example: + * + * ```sh + * $ pulumi import aws:timestreaminfluxdb/dbInstance:DbInstance example 12345abcde + * ``` + * + */ +@ResourceType(type="aws:timestreaminfluxdb/dbInstance:DbInstance") +public class DbInstance extends com.pulumi.resources.CustomResource { + /** + * Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + * + */ + @Export(name="allocatedStorage", refs={Integer.class}, tree="[0]") + private Output allocatedStorage; + + /** + * @return Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + * + */ + public Output allocatedStorage() { + return this.allocatedStorage; + } + /** + * ARN of the Timestream for InfluxDB Instance. + * + */ + @Export(name="arn", refs={String.class}, tree="[0]") + private Output arn; + + /** + * @return ARN of the Timestream for InfluxDB Instance. + * + */ + public Output arn() { + return this.arn; + } + /** + * Availability Zone in which the DB instance resides. + * + */ + @Export(name="availabilityZone", refs={String.class}, tree="[0]") + private Output availabilityZone; + + /** + * @return Availability Zone in which the DB instance resides. + * + */ + public Output availabilityZone() { + return this.availabilityZone; + } + /** + * Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + @Export(name="bucket", refs={String.class}, tree="[0]") + private Output bucket; + + /** + * @return Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + public Output bucket() { + return this.bucket; + } + /** + * Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + * + */ + @Export(name="dbInstanceType", refs={String.class}, tree="[0]") + private Output dbInstanceType; + + /** + * @return Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + * + */ + public Output dbInstanceType() { + return this.dbInstanceType; + } + /** + * ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + * + */ + @Export(name="dbParameterGroupIdentifier", refs={String.class}, tree="[0]") + private Output dbParameterGroupIdentifier; + + /** + * @return ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + * + */ + public Output> dbParameterGroupIdentifier() { + return Codegen.optional(this.dbParameterGroupIdentifier); + } + /** + * Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + * + */ + @Export(name="dbStorageType", refs={String.class}, tree="[0]") + private Output dbStorageType; + + /** + * @return Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + * + */ + public Output dbStorageType() { + return this.dbStorageType; + } + /** + * Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + * + */ + @Export(name="deploymentType", refs={String.class}, tree="[0]") + private Output deploymentType; + + /** + * @return Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + * + */ + public Output deploymentType() { + return this.deploymentType; + } + /** + * Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + * + */ + @Export(name="endpoint", refs={String.class}, tree="[0]") + private Output endpoint; + + /** + * @return Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + * + */ + public Output endpoint() { + return this.endpoint; + } + /** + * ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `aws.timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + * + */ + @Export(name="influxAuthParametersSecretArn", refs={String.class}, tree="[0]") + private Output influxAuthParametersSecretArn; + + /** + * @return ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `aws.timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + * + */ + public Output influxAuthParametersSecretArn() { + return this.influxAuthParametersSecretArn; + } + /** + * Configuration for sending InfluxDB engine logs to a specified S3 bucket. + * + */ + @Export(name="logDeliveryConfiguration", refs={DbInstanceLogDeliveryConfiguration.class}, tree="[0]") + private Output logDeliveryConfiguration; + + /** + * @return Configuration for sending InfluxDB engine logs to a specified S3 bucket. + * + */ + public Output> logDeliveryConfiguration() { + return Codegen.optional(this.logDeliveryConfiguration); + } + /** + * Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + * + */ + @Export(name="name", refs={String.class}, tree="[0]") + private Output name; + + /** + * @return Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + * + */ + public Output name() { + return this.name; + } + /** + * Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + @Export(name="organization", refs={String.class}, tree="[0]") + private Output organization; + + /** + * @return Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + public Output organization() { + return this.organization; + } + /** + * Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + @Export(name="password", refs={String.class}, tree="[0]") + private Output password; + + /** + * @return Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + public Output password() { + return this.password; + } + /** + * Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + * + */ + @Export(name="publiclyAccessible", refs={Boolean.class}, tree="[0]") + private Output publiclyAccessible; + + /** + * @return Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + * + */ + public Output publiclyAccessible() { + return this.publiclyAccessible; + } + /** + * Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + * + */ + @Export(name="secondaryAvailabilityZone", refs={String.class}, tree="[0]") + private Output secondaryAvailabilityZone; + + /** + * @return Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + * + */ + public Output secondaryAvailabilityZone() { + return this.secondaryAvailabilityZone; + } + /** + * Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * + */ + @Export(name="tags", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> tags; + + /** + * @return Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * + */ + public Output>> tags() { + return Codegen.optional(this.tags); + } + /** + * Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + @Export(name="tagsAll", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> tagsAll; + + /** + * @return Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + */ + public Output> tagsAll() { + return this.tagsAll; + } + @Export(name="timeouts", refs={DbInstanceTimeouts.class}, tree="[0]") + private Output timeouts; + + public Output> timeouts() { + return Codegen.optional(this.timeouts); + } + /** + * Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + @Export(name="username", refs={String.class}, tree="[0]") + private Output username; + + /** + * @return Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + public Output username() { + return this.username; + } + /** + * List of VPC security group IDs to associate with the DB instance. + * + */ + @Export(name="vpcSecurityGroupIds", refs={List.class,String.class}, tree="[0,1]") + private Output> vpcSecurityGroupIds; + + /** + * @return List of VPC security group IDs to associate with the DB instance. + * + */ + public Output> vpcSecurityGroupIds() { + return this.vpcSecurityGroupIds; + } + /** + * List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + * + */ + @Export(name="vpcSubnetIds", refs={List.class,String.class}, tree="[0,1]") + private Output> vpcSubnetIds; + + /** + * @return List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + * + */ + public Output> vpcSubnetIds() { + return this.vpcSubnetIds; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public DbInstance(String name) { + this(name, DbInstanceArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public DbInstance(String name, DbInstanceArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public DbInstance(String name, DbInstanceArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("aws:timestreaminfluxdb/dbInstance:DbInstance", name, args == null ? DbInstanceArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private DbInstance(String name, Output id, @Nullable DbInstanceState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("aws:timestreaminfluxdb/dbInstance:DbInstance", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .additionalSecretOutputs(List.of( + "password" + )) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static DbInstance get(String name, Output id, @Nullable DbInstanceState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new DbInstance(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/DbInstanceArgs.java b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/DbInstanceArgs.java new file mode 100644 index 00000000000..49b37f80208 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/DbInstanceArgs.java @@ -0,0 +1,679 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.timestreaminfluxdb; + +import com.pulumi.aws.timestreaminfluxdb.inputs.DbInstanceLogDeliveryConfigurationArgs; +import com.pulumi.aws.timestreaminfluxdb.inputs.DbInstanceTimeoutsArgs; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class DbInstanceArgs extends com.pulumi.resources.ResourceArgs { + + public static final DbInstanceArgs Empty = new DbInstanceArgs(); + + /** + * Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + * + */ + @Import(name="allocatedStorage", required=true) + private Output allocatedStorage; + + /** + * @return Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + * + */ + public Output allocatedStorage() { + return this.allocatedStorage; + } + + /** + * Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + @Import(name="bucket", required=true) + private Output bucket; + + /** + * @return Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + public Output bucket() { + return this.bucket; + } + + /** + * Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + * + */ + @Import(name="dbInstanceType", required=true) + private Output dbInstanceType; + + /** + * @return Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + * + */ + public Output dbInstanceType() { + return this.dbInstanceType; + } + + /** + * ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + * + */ + @Import(name="dbParameterGroupIdentifier") + private @Nullable Output dbParameterGroupIdentifier; + + /** + * @return ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + * + */ + public Optional> dbParameterGroupIdentifier() { + return Optional.ofNullable(this.dbParameterGroupIdentifier); + } + + /** + * Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + * + */ + @Import(name="dbStorageType") + private @Nullable Output dbStorageType; + + /** + * @return Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + * + */ + public Optional> dbStorageType() { + return Optional.ofNullable(this.dbStorageType); + } + + /** + * Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + * + */ + @Import(name="deploymentType") + private @Nullable Output deploymentType; + + /** + * @return Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + * + */ + public Optional> deploymentType() { + return Optional.ofNullable(this.deploymentType); + } + + /** + * Configuration for sending InfluxDB engine logs to a specified S3 bucket. + * + */ + @Import(name="logDeliveryConfiguration") + private @Nullable Output logDeliveryConfiguration; + + /** + * @return Configuration for sending InfluxDB engine logs to a specified S3 bucket. + * + */ + public Optional> logDeliveryConfiguration() { + return Optional.ofNullable(this.logDeliveryConfiguration); + } + + /** + * Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + @Import(name="organization", required=true) + private Output organization; + + /** + * @return Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + public Output organization() { + return this.organization; + } + + /** + * Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + @Import(name="password", required=true) + private Output password; + + /** + * @return Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + public Output password() { + return this.password; + } + + /** + * Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + * + */ + @Import(name="publiclyAccessible") + private @Nullable Output publiclyAccessible; + + /** + * @return Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + * + */ + public Optional> publiclyAccessible() { + return Optional.ofNullable(this.publiclyAccessible); + } + + /** + * Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * + */ + @Import(name="tags") + private @Nullable Output> tags; + + /** + * @return Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * + */ + public Optional>> tags() { + return Optional.ofNullable(this.tags); + } + + @Import(name="timeouts") + private @Nullable Output timeouts; + + public Optional> timeouts() { + return Optional.ofNullable(this.timeouts); + } + + /** + * Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + @Import(name="username", required=true) + private Output username; + + /** + * @return Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + public Output username() { + return this.username; + } + + /** + * List of VPC security group IDs to associate with the DB instance. + * + */ + @Import(name="vpcSecurityGroupIds", required=true) + private Output> vpcSecurityGroupIds; + + /** + * @return List of VPC security group IDs to associate with the DB instance. + * + */ + public Output> vpcSecurityGroupIds() { + return this.vpcSecurityGroupIds; + } + + /** + * List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + * + */ + @Import(name="vpcSubnetIds", required=true) + private Output> vpcSubnetIds; + + /** + * @return List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + * + */ + public Output> vpcSubnetIds() { + return this.vpcSubnetIds; + } + + private DbInstanceArgs() {} + + private DbInstanceArgs(DbInstanceArgs $) { + this.allocatedStorage = $.allocatedStorage; + this.bucket = $.bucket; + this.dbInstanceType = $.dbInstanceType; + this.dbParameterGroupIdentifier = $.dbParameterGroupIdentifier; + this.dbStorageType = $.dbStorageType; + this.deploymentType = $.deploymentType; + this.logDeliveryConfiguration = $.logDeliveryConfiguration; + this.name = $.name; + this.organization = $.organization; + this.password = $.password; + this.publiclyAccessible = $.publiclyAccessible; + this.tags = $.tags; + this.timeouts = $.timeouts; + this.username = $.username; + this.vpcSecurityGroupIds = $.vpcSecurityGroupIds; + this.vpcSubnetIds = $.vpcSubnetIds; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(DbInstanceArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private DbInstanceArgs $; + + public Builder() { + $ = new DbInstanceArgs(); + } + + public Builder(DbInstanceArgs defaults) { + $ = new DbInstanceArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param allocatedStorage Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + * + * @return builder + * + */ + public Builder allocatedStorage(Output allocatedStorage) { + $.allocatedStorage = allocatedStorage; + return this; + } + + /** + * @param allocatedStorage Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + * + * @return builder + * + */ + public Builder allocatedStorage(Integer allocatedStorage) { + return allocatedStorage(Output.of(allocatedStorage)); + } + + /** + * @param bucket Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder bucket(Output bucket) { + $.bucket = bucket; + return this; + } + + /** + * @param bucket Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder bucket(String bucket) { + return bucket(Output.of(bucket)); + } + + /** + * @param dbInstanceType Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + * + * @return builder + * + */ + public Builder dbInstanceType(Output dbInstanceType) { + $.dbInstanceType = dbInstanceType; + return this; + } + + /** + * @param dbInstanceType Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + * + * @return builder + * + */ + public Builder dbInstanceType(String dbInstanceType) { + return dbInstanceType(Output.of(dbInstanceType)); + } + + /** + * @param dbParameterGroupIdentifier ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + * + * @return builder + * + */ + public Builder dbParameterGroupIdentifier(@Nullable Output dbParameterGroupIdentifier) { + $.dbParameterGroupIdentifier = dbParameterGroupIdentifier; + return this; + } + + /** + * @param dbParameterGroupIdentifier ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + * + * @return builder + * + */ + public Builder dbParameterGroupIdentifier(String dbParameterGroupIdentifier) { + return dbParameterGroupIdentifier(Output.of(dbParameterGroupIdentifier)); + } + + /** + * @param dbStorageType Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + * + * @return builder + * + */ + public Builder dbStorageType(@Nullable Output dbStorageType) { + $.dbStorageType = dbStorageType; + return this; + } + + /** + * @param dbStorageType Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + * + * @return builder + * + */ + public Builder dbStorageType(String dbStorageType) { + return dbStorageType(Output.of(dbStorageType)); + } + + /** + * @param deploymentType Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + * + * @return builder + * + */ + public Builder deploymentType(@Nullable Output deploymentType) { + $.deploymentType = deploymentType; + return this; + } + + /** + * @param deploymentType Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + * + * @return builder + * + */ + public Builder deploymentType(String deploymentType) { + return deploymentType(Output.of(deploymentType)); + } + + /** + * @param logDeliveryConfiguration Configuration for sending InfluxDB engine logs to a specified S3 bucket. + * + * @return builder + * + */ + public Builder logDeliveryConfiguration(@Nullable Output logDeliveryConfiguration) { + $.logDeliveryConfiguration = logDeliveryConfiguration; + return this; + } + + /** + * @param logDeliveryConfiguration Configuration for sending InfluxDB engine logs to a specified S3 bucket. + * + * @return builder + * + */ + public Builder logDeliveryConfiguration(DbInstanceLogDeliveryConfigurationArgs logDeliveryConfiguration) { + return logDeliveryConfiguration(Output.of(logDeliveryConfiguration)); + } + + /** + * @param name Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param organization Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder organization(Output organization) { + $.organization = organization; + return this; + } + + /** + * @param organization Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder organization(String organization) { + return organization(Output.of(organization)); + } + + /** + * @param password Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder password(Output password) { + $.password = password; + return this; + } + + /** + * @param password Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder password(String password) { + return password(Output.of(password)); + } + + /** + * @param publiclyAccessible Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + * + * @return builder + * + */ + public Builder publiclyAccessible(@Nullable Output publiclyAccessible) { + $.publiclyAccessible = publiclyAccessible; + return this; + } + + /** + * @param publiclyAccessible Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + * + * @return builder + * + */ + public Builder publiclyAccessible(Boolean publiclyAccessible) { + return publiclyAccessible(Output.of(publiclyAccessible)); + } + + /** + * @param tags Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * + * @return builder + * + */ + public Builder tags(@Nullable Output> tags) { + $.tags = tags; + return this; + } + + /** + * @param tags Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * + * @return builder + * + */ + public Builder tags(Map tags) { + return tags(Output.of(tags)); + } + + public Builder timeouts(@Nullable Output timeouts) { + $.timeouts = timeouts; + return this; + } + + public Builder timeouts(DbInstanceTimeoutsArgs timeouts) { + return timeouts(Output.of(timeouts)); + } + + /** + * @param username Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder username(Output username) { + $.username = username; + return this; + } + + /** + * @param username Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + /** + * @param vpcSecurityGroupIds List of VPC security group IDs to associate with the DB instance. + * + * @return builder + * + */ + public Builder vpcSecurityGroupIds(Output> vpcSecurityGroupIds) { + $.vpcSecurityGroupIds = vpcSecurityGroupIds; + return this; + } + + /** + * @param vpcSecurityGroupIds List of VPC security group IDs to associate with the DB instance. + * + * @return builder + * + */ + public Builder vpcSecurityGroupIds(List vpcSecurityGroupIds) { + return vpcSecurityGroupIds(Output.of(vpcSecurityGroupIds)); + } + + /** + * @param vpcSecurityGroupIds List of VPC security group IDs to associate with the DB instance. + * + * @return builder + * + */ + public Builder vpcSecurityGroupIds(String... vpcSecurityGroupIds) { + return vpcSecurityGroupIds(List.of(vpcSecurityGroupIds)); + } + + /** + * @param vpcSubnetIds List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder vpcSubnetIds(Output> vpcSubnetIds) { + $.vpcSubnetIds = vpcSubnetIds; + return this; + } + + /** + * @param vpcSubnetIds List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder vpcSubnetIds(List vpcSubnetIds) { + return vpcSubnetIds(Output.of(vpcSubnetIds)); + } + + /** + * @param vpcSubnetIds List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder vpcSubnetIds(String... vpcSubnetIds) { + return vpcSubnetIds(List.of(vpcSubnetIds)); + } + + public DbInstanceArgs build() { + if ($.allocatedStorage == null) { + throw new MissingRequiredPropertyException("DbInstanceArgs", "allocatedStorage"); + } + if ($.bucket == null) { + throw new MissingRequiredPropertyException("DbInstanceArgs", "bucket"); + } + if ($.dbInstanceType == null) { + throw new MissingRequiredPropertyException("DbInstanceArgs", "dbInstanceType"); + } + if ($.organization == null) { + throw new MissingRequiredPropertyException("DbInstanceArgs", "organization"); + } + if ($.password == null) { + throw new MissingRequiredPropertyException("DbInstanceArgs", "password"); + } + if ($.username == null) { + throw new MissingRequiredPropertyException("DbInstanceArgs", "username"); + } + if ($.vpcSecurityGroupIds == null) { + throw new MissingRequiredPropertyException("DbInstanceArgs", "vpcSecurityGroupIds"); + } + if ($.vpcSubnetIds == null) { + throw new MissingRequiredPropertyException("DbInstanceArgs", "vpcSubnetIds"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceLogDeliveryConfigurationArgs.java b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceLogDeliveryConfigurationArgs.java new file mode 100644 index 00000000000..8cbc828e41f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceLogDeliveryConfigurationArgs.java @@ -0,0 +1,83 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.timestreaminfluxdb.inputs; + +import com.pulumi.aws.timestreaminfluxdb.inputs.DbInstanceLogDeliveryConfigurationS3ConfigurationArgs; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class DbInstanceLogDeliveryConfigurationArgs extends com.pulumi.resources.ResourceArgs { + + public static final DbInstanceLogDeliveryConfigurationArgs Empty = new DbInstanceLogDeliveryConfigurationArgs(); + + /** + * Configuration for S3 bucket log delivery. + * + */ + @Import(name="s3Configuration") + private @Nullable Output s3Configuration; + + /** + * @return Configuration for S3 bucket log delivery. + * + */ + public Optional> s3Configuration() { + return Optional.ofNullable(this.s3Configuration); + } + + private DbInstanceLogDeliveryConfigurationArgs() {} + + private DbInstanceLogDeliveryConfigurationArgs(DbInstanceLogDeliveryConfigurationArgs $) { + this.s3Configuration = $.s3Configuration; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(DbInstanceLogDeliveryConfigurationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private DbInstanceLogDeliveryConfigurationArgs $; + + public Builder() { + $ = new DbInstanceLogDeliveryConfigurationArgs(); + } + + public Builder(DbInstanceLogDeliveryConfigurationArgs defaults) { + $ = new DbInstanceLogDeliveryConfigurationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param s3Configuration Configuration for S3 bucket log delivery. + * + * @return builder + * + */ + public Builder s3Configuration(@Nullable Output s3Configuration) { + $.s3Configuration = s3Configuration; + return this; + } + + /** + * @param s3Configuration Configuration for S3 bucket log delivery. + * + * @return builder + * + */ + public Builder s3Configuration(DbInstanceLogDeliveryConfigurationS3ConfigurationArgs s3Configuration) { + return s3Configuration(Output.of(s3Configuration)); + } + + public DbInstanceLogDeliveryConfigurationArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceLogDeliveryConfigurationS3ConfigurationArgs.java b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceLogDeliveryConfigurationS3ConfigurationArgs.java new file mode 100644 index 00000000000..e4e383c0c3e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceLogDeliveryConfigurationS3ConfigurationArgs.java @@ -0,0 +1,134 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.timestreaminfluxdb.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; + + +public final class DbInstanceLogDeliveryConfigurationS3ConfigurationArgs extends com.pulumi.resources.ResourceArgs { + + public static final DbInstanceLogDeliveryConfigurationS3ConfigurationArgs Empty = new DbInstanceLogDeliveryConfigurationS3ConfigurationArgs(); + + /** + * Name of the S3 bucket to deliver logs to. + * + */ + @Import(name="bucketName", required=true) + private Output bucketName; + + /** + * @return Name of the S3 bucket to deliver logs to. + * + */ + public Output bucketName() { + return this.bucketName; + } + + /** + * Indicates whether log delivery to the S3 bucket is enabled. + * + * **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + * + */ + @Import(name="enabled", required=true) + private Output enabled; + + /** + * @return Indicates whether log delivery to the S3 bucket is enabled. + * + * **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + * + */ + public Output enabled() { + return this.enabled; + } + + private DbInstanceLogDeliveryConfigurationS3ConfigurationArgs() {} + + private DbInstanceLogDeliveryConfigurationS3ConfigurationArgs(DbInstanceLogDeliveryConfigurationS3ConfigurationArgs $) { + this.bucketName = $.bucketName; + this.enabled = $.enabled; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(DbInstanceLogDeliveryConfigurationS3ConfigurationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private DbInstanceLogDeliveryConfigurationS3ConfigurationArgs $; + + public Builder() { + $ = new DbInstanceLogDeliveryConfigurationS3ConfigurationArgs(); + } + + public Builder(DbInstanceLogDeliveryConfigurationS3ConfigurationArgs defaults) { + $ = new DbInstanceLogDeliveryConfigurationS3ConfigurationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param bucketName Name of the S3 bucket to deliver logs to. + * + * @return builder + * + */ + public Builder bucketName(Output bucketName) { + $.bucketName = bucketName; + return this; + } + + /** + * @param bucketName Name of the S3 bucket to deliver logs to. + * + * @return builder + * + */ + public Builder bucketName(String bucketName) { + return bucketName(Output.of(bucketName)); + } + + /** + * @param enabled Indicates whether log delivery to the S3 bucket is enabled. + * + * **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + * + * @return builder + * + */ + public Builder enabled(Output enabled) { + $.enabled = enabled; + return this; + } + + /** + * @param enabled Indicates whether log delivery to the S3 bucket is enabled. + * + * **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + * + * @return builder + * + */ + public Builder enabled(Boolean enabled) { + return enabled(Output.of(enabled)); + } + + public DbInstanceLogDeliveryConfigurationS3ConfigurationArgs build() { + if ($.bucketName == null) { + throw new MissingRequiredPropertyException("DbInstanceLogDeliveryConfigurationS3ConfigurationArgs", "bucketName"); + } + if ($.enabled == null) { + throw new MissingRequiredPropertyException("DbInstanceLogDeliveryConfigurationS3ConfigurationArgs", "enabled"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceState.java b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceState.java new file mode 100644 index 00000000000..0dc9d36e927 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceState.java @@ -0,0 +1,892 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.timestreaminfluxdb.inputs; + +import com.pulumi.aws.timestreaminfluxdb.inputs.DbInstanceLogDeliveryConfigurationArgs; +import com.pulumi.aws.timestreaminfluxdb.inputs.DbInstanceTimeoutsArgs; +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class DbInstanceState extends com.pulumi.resources.ResourceArgs { + + public static final DbInstanceState Empty = new DbInstanceState(); + + /** + * Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + * + */ + @Import(name="allocatedStorage") + private @Nullable Output allocatedStorage; + + /** + * @return Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + * + */ + public Optional> allocatedStorage() { + return Optional.ofNullable(this.allocatedStorage); + } + + /** + * ARN of the Timestream for InfluxDB Instance. + * + */ + @Import(name="arn") + private @Nullable Output arn; + + /** + * @return ARN of the Timestream for InfluxDB Instance. + * + */ + public Optional> arn() { + return Optional.ofNullable(this.arn); + } + + /** + * Availability Zone in which the DB instance resides. + * + */ + @Import(name="availabilityZone") + private @Nullable Output availabilityZone; + + /** + * @return Availability Zone in which the DB instance resides. + * + */ + public Optional> availabilityZone() { + return Optional.ofNullable(this.availabilityZone); + } + + /** + * Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + @Import(name="bucket") + private @Nullable Output bucket; + + /** + * @return Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + public Optional> bucket() { + return Optional.ofNullable(this.bucket); + } + + /** + * Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + * + */ + @Import(name="dbInstanceType") + private @Nullable Output dbInstanceType; + + /** + * @return Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + * + */ + public Optional> dbInstanceType() { + return Optional.ofNullable(this.dbInstanceType); + } + + /** + * ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + * + */ + @Import(name="dbParameterGroupIdentifier") + private @Nullable Output dbParameterGroupIdentifier; + + /** + * @return ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + * + */ + public Optional> dbParameterGroupIdentifier() { + return Optional.ofNullable(this.dbParameterGroupIdentifier); + } + + /** + * Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + * + */ + @Import(name="dbStorageType") + private @Nullable Output dbStorageType; + + /** + * @return Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + * + */ + public Optional> dbStorageType() { + return Optional.ofNullable(this.dbStorageType); + } + + /** + * Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + * + */ + @Import(name="deploymentType") + private @Nullable Output deploymentType; + + /** + * @return Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + * + */ + public Optional> deploymentType() { + return Optional.ofNullable(this.deploymentType); + } + + /** + * Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + * + */ + @Import(name="endpoint") + private @Nullable Output endpoint; + + /** + * @return Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + * + */ + public Optional> endpoint() { + return Optional.ofNullable(this.endpoint); + } + + /** + * ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `aws.timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + * + */ + @Import(name="influxAuthParametersSecretArn") + private @Nullable Output influxAuthParametersSecretArn; + + /** + * @return ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `aws.timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + * + */ + public Optional> influxAuthParametersSecretArn() { + return Optional.ofNullable(this.influxAuthParametersSecretArn); + } + + /** + * Configuration for sending InfluxDB engine logs to a specified S3 bucket. + * + */ + @Import(name="logDeliveryConfiguration") + private @Nullable Output logDeliveryConfiguration; + + /** + * @return Configuration for sending InfluxDB engine logs to a specified S3 bucket. + * + */ + public Optional> logDeliveryConfiguration() { + return Optional.ofNullable(this.logDeliveryConfiguration); + } + + /** + * Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + @Import(name="organization") + private @Nullable Output organization; + + /** + * @return Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + public Optional> organization() { + return Optional.ofNullable(this.organization); + } + + /** + * Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + @Import(name="password") + private @Nullable Output password; + + /** + * @return Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + public Optional> password() { + return Optional.ofNullable(this.password); + } + + /** + * Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + * + */ + @Import(name="publiclyAccessible") + private @Nullable Output publiclyAccessible; + + /** + * @return Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + * + */ + public Optional> publiclyAccessible() { + return Optional.ofNullable(this.publiclyAccessible); + } + + /** + * Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + * + */ + @Import(name="secondaryAvailabilityZone") + private @Nullable Output secondaryAvailabilityZone; + + /** + * @return Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + * + */ + public Optional> secondaryAvailabilityZone() { + return Optional.ofNullable(this.secondaryAvailabilityZone); + } + + /** + * Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * + */ + @Import(name="tags") + private @Nullable Output> tags; + + /** + * @return Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * + */ + public Optional>> tags() { + return Optional.ofNullable(this.tags); + } + + /** + * Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + @Import(name="tagsAll") + private @Nullable Output> tagsAll; + + /** + * @return Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + public Optional>> tagsAll() { + return Optional.ofNullable(this.tagsAll); + } + + @Import(name="timeouts") + private @Nullable Output timeouts; + + public Optional> timeouts() { + return Optional.ofNullable(this.timeouts); + } + + /** + * Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + @Import(name="username") + private @Nullable Output username; + + /** + * @return Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + */ + public Optional> username() { + return Optional.ofNullable(this.username); + } + + /** + * List of VPC security group IDs to associate with the DB instance. + * + */ + @Import(name="vpcSecurityGroupIds") + private @Nullable Output> vpcSecurityGroupIds; + + /** + * @return List of VPC security group IDs to associate with the DB instance. + * + */ + public Optional>> vpcSecurityGroupIds() { + return Optional.ofNullable(this.vpcSecurityGroupIds); + } + + /** + * List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + * + */ + @Import(name="vpcSubnetIds") + private @Nullable Output> vpcSubnetIds; + + /** + * @return List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + * + */ + public Optional>> vpcSubnetIds() { + return Optional.ofNullable(this.vpcSubnetIds); + } + + private DbInstanceState() {} + + private DbInstanceState(DbInstanceState $) { + this.allocatedStorage = $.allocatedStorage; + this.arn = $.arn; + this.availabilityZone = $.availabilityZone; + this.bucket = $.bucket; + this.dbInstanceType = $.dbInstanceType; + this.dbParameterGroupIdentifier = $.dbParameterGroupIdentifier; + this.dbStorageType = $.dbStorageType; + this.deploymentType = $.deploymentType; + this.endpoint = $.endpoint; + this.influxAuthParametersSecretArn = $.influxAuthParametersSecretArn; + this.logDeliveryConfiguration = $.logDeliveryConfiguration; + this.name = $.name; + this.organization = $.organization; + this.password = $.password; + this.publiclyAccessible = $.publiclyAccessible; + this.secondaryAvailabilityZone = $.secondaryAvailabilityZone; + this.tags = $.tags; + this.tagsAll = $.tagsAll; + this.timeouts = $.timeouts; + this.username = $.username; + this.vpcSecurityGroupIds = $.vpcSecurityGroupIds; + this.vpcSubnetIds = $.vpcSubnetIds; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(DbInstanceState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private DbInstanceState $; + + public Builder() { + $ = new DbInstanceState(); + } + + public Builder(DbInstanceState defaults) { + $ = new DbInstanceState(Objects.requireNonNull(defaults)); + } + + /** + * @param allocatedStorage Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + * + * @return builder + * + */ + public Builder allocatedStorage(@Nullable Output allocatedStorage) { + $.allocatedStorage = allocatedStorage; + return this; + } + + /** + * @param allocatedStorage Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + * + * @return builder + * + */ + public Builder allocatedStorage(Integer allocatedStorage) { + return allocatedStorage(Output.of(allocatedStorage)); + } + + /** + * @param arn ARN of the Timestream for InfluxDB Instance. + * + * @return builder + * + */ + public Builder arn(@Nullable Output arn) { + $.arn = arn; + return this; + } + + /** + * @param arn ARN of the Timestream for InfluxDB Instance. + * + * @return builder + * + */ + public Builder arn(String arn) { + return arn(Output.of(arn)); + } + + /** + * @param availabilityZone Availability Zone in which the DB instance resides. + * + * @return builder + * + */ + public Builder availabilityZone(@Nullable Output availabilityZone) { + $.availabilityZone = availabilityZone; + return this; + } + + /** + * @param availabilityZone Availability Zone in which the DB instance resides. + * + * @return builder + * + */ + public Builder availabilityZone(String availabilityZone) { + return availabilityZone(Output.of(availabilityZone)); + } + + /** + * @param bucket Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder bucket(@Nullable Output bucket) { + $.bucket = bucket; + return this; + } + + /** + * @param bucket Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder bucket(String bucket) { + return bucket(Output.of(bucket)); + } + + /** + * @param dbInstanceType Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + * + * @return builder + * + */ + public Builder dbInstanceType(@Nullable Output dbInstanceType) { + $.dbInstanceType = dbInstanceType; + return this; + } + + /** + * @param dbInstanceType Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + * + * @return builder + * + */ + public Builder dbInstanceType(String dbInstanceType) { + return dbInstanceType(Output.of(dbInstanceType)); + } + + /** + * @param dbParameterGroupIdentifier ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + * + * @return builder + * + */ + public Builder dbParameterGroupIdentifier(@Nullable Output dbParameterGroupIdentifier) { + $.dbParameterGroupIdentifier = dbParameterGroupIdentifier; + return this; + } + + /** + * @param dbParameterGroupIdentifier ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + * + * @return builder + * + */ + public Builder dbParameterGroupIdentifier(String dbParameterGroupIdentifier) { + return dbParameterGroupIdentifier(Output.of(dbParameterGroupIdentifier)); + } + + /** + * @param dbStorageType Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + * + * @return builder + * + */ + public Builder dbStorageType(@Nullable Output dbStorageType) { + $.dbStorageType = dbStorageType; + return this; + } + + /** + * @param dbStorageType Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use ` "InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + * + * @return builder + * + */ + public Builder dbStorageType(String dbStorageType) { + return dbStorageType(Output.of(dbStorageType)); + } + + /** + * @param deploymentType Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + * + * @return builder + * + */ + public Builder deploymentType(@Nullable Output deploymentType) { + $.deploymentType = deploymentType; + return this; + } + + /** + * @param deploymentType Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + * + * @return builder + * + */ + public Builder deploymentType(String deploymentType) { + return deploymentType(Output.of(deploymentType)); + } + + /** + * @param endpoint Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + * + * @return builder + * + */ + public Builder endpoint(@Nullable Output endpoint) { + $.endpoint = endpoint; + return this; + } + + /** + * @param endpoint Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + * + * @return builder + * + */ + public Builder endpoint(String endpoint) { + return endpoint(Output.of(endpoint)); + } + + /** + * @param influxAuthParametersSecretArn ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `aws.timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + * + * @return builder + * + */ + public Builder influxAuthParametersSecretArn(@Nullable Output influxAuthParametersSecretArn) { + $.influxAuthParametersSecretArn = influxAuthParametersSecretArn; + return this; + } + + /** + * @param influxAuthParametersSecretArn ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `aws.timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + * + * @return builder + * + */ + public Builder influxAuthParametersSecretArn(String influxAuthParametersSecretArn) { + return influxAuthParametersSecretArn(Output.of(influxAuthParametersSecretArn)); + } + + /** + * @param logDeliveryConfiguration Configuration for sending InfluxDB engine logs to a specified S3 bucket. + * + * @return builder + * + */ + public Builder logDeliveryConfiguration(@Nullable Output logDeliveryConfiguration) { + $.logDeliveryConfiguration = logDeliveryConfiguration; + return this; + } + + /** + * @param logDeliveryConfiguration Configuration for sending InfluxDB engine logs to a specified S3 bucket. + * + * @return builder + * + */ + public Builder logDeliveryConfiguration(DbInstanceLogDeliveryConfigurationArgs logDeliveryConfiguration) { + return logDeliveryConfiguration(Output.of(logDeliveryConfiguration)); + } + + /** + * @param name Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param organization Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder organization(@Nullable Output organization) { + $.organization = organization; + return this; + } + + /** + * @param organization Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder organization(String organization) { + return organization(Output.of(organization)); + } + + /** + * @param password Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder password(@Nullable Output password) { + $.password = password; + return this; + } + + /** + * @param password Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder password(String password) { + return password(Output.of(password)); + } + + /** + * @param publiclyAccessible Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + * + * @return builder + * + */ + public Builder publiclyAccessible(@Nullable Output publiclyAccessible) { + $.publiclyAccessible = publiclyAccessible; + return this; + } + + /** + * @param publiclyAccessible Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + * + * @return builder + * + */ + public Builder publiclyAccessible(Boolean publiclyAccessible) { + return publiclyAccessible(Output.of(publiclyAccessible)); + } + + /** + * @param secondaryAvailabilityZone Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + * + * @return builder + * + */ + public Builder secondaryAvailabilityZone(@Nullable Output secondaryAvailabilityZone) { + $.secondaryAvailabilityZone = secondaryAvailabilityZone; + return this; + } + + /** + * @param secondaryAvailabilityZone Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + * + * @return builder + * + */ + public Builder secondaryAvailabilityZone(String secondaryAvailabilityZone) { + return secondaryAvailabilityZone(Output.of(secondaryAvailabilityZone)); + } + + /** + * @param tags Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * + * @return builder + * + */ + public Builder tags(@Nullable Output> tags) { + $.tags = tags; + return this; + } + + /** + * @param tags Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * + * @return builder + * + */ + public Builder tags(Map tags) { + return tags(Output.of(tags)); + } + + /** + * @param tagsAll Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @return builder + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + public Builder tagsAll(@Nullable Output> tagsAll) { + $.tagsAll = tagsAll; + return this; + } + + /** + * @param tagsAll Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + * + * @return builder + * + * @deprecated + * Please use `tags` instead. + * + */ + @Deprecated /* Please use `tags` instead. */ + public Builder tagsAll(Map tagsAll) { + return tagsAll(Output.of(tagsAll)); + } + + public Builder timeouts(@Nullable Output timeouts) { + $.timeouts = timeouts; + return this; + } + + public Builder timeouts(DbInstanceTimeoutsArgs timeouts) { + return timeouts(Output.of(timeouts)); + } + + /** + * @param username Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder username(@Nullable Output username) { + $.username = username; + return this; + } + + /** + * @param username Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + /** + * @param vpcSecurityGroupIds List of VPC security group IDs to associate with the DB instance. + * + * @return builder + * + */ + public Builder vpcSecurityGroupIds(@Nullable Output> vpcSecurityGroupIds) { + $.vpcSecurityGroupIds = vpcSecurityGroupIds; + return this; + } + + /** + * @param vpcSecurityGroupIds List of VPC security group IDs to associate with the DB instance. + * + * @return builder + * + */ + public Builder vpcSecurityGroupIds(List vpcSecurityGroupIds) { + return vpcSecurityGroupIds(Output.of(vpcSecurityGroupIds)); + } + + /** + * @param vpcSecurityGroupIds List of VPC security group IDs to associate with the DB instance. + * + * @return builder + * + */ + public Builder vpcSecurityGroupIds(String... vpcSecurityGroupIds) { + return vpcSecurityGroupIds(List.of(vpcSecurityGroupIds)); + } + + /** + * @param vpcSubnetIds List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder vpcSubnetIds(@Nullable Output> vpcSubnetIds) { + $.vpcSubnetIds = vpcSubnetIds; + return this; + } + + /** + * @param vpcSubnetIds List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder vpcSubnetIds(List vpcSubnetIds) { + return vpcSubnetIds(Output.of(vpcSubnetIds)); + } + + /** + * @param vpcSubnetIds List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + * + * @return builder + * + */ + public Builder vpcSubnetIds(String... vpcSubnetIds) { + return vpcSubnetIds(List.of(vpcSubnetIds)); + } + + public DbInstanceState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceTimeoutsArgs.java b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceTimeoutsArgs.java new file mode 100644 index 00000000000..d19e518031b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/inputs/DbInstanceTimeoutsArgs.java @@ -0,0 +1,157 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.timestreaminfluxdb.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class DbInstanceTimeoutsArgs extends com.pulumi.resources.ResourceArgs { + + public static final DbInstanceTimeoutsArgs Empty = new DbInstanceTimeoutsArgs(); + + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + @Import(name="create") + private @Nullable Output create; + + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + public Optional> create() { + return Optional.ofNullable(this.create); + } + + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + */ + @Import(name="delete") + private @Nullable Output delete; + + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + */ + public Optional> delete() { + return Optional.ofNullable(this.delete); + } + + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + @Import(name="update") + private @Nullable Output update; + + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + public Optional> update() { + return Optional.ofNullable(this.update); + } + + private DbInstanceTimeoutsArgs() {} + + private DbInstanceTimeoutsArgs(DbInstanceTimeoutsArgs $) { + this.create = $.create; + this.delete = $.delete; + this.update = $.update; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(DbInstanceTimeoutsArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private DbInstanceTimeoutsArgs $; + + public Builder() { + $ = new DbInstanceTimeoutsArgs(); + } + + public Builder(DbInstanceTimeoutsArgs defaults) { + $ = new DbInstanceTimeoutsArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param create A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + * @return builder + * + */ + public Builder create(@Nullable Output create) { + $.create = create; + return this; + } + + /** + * @param create A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + * @return builder + * + */ + public Builder create(String create) { + return create(Output.of(create)); + } + + /** + * @param delete A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + * @return builder + * + */ + public Builder delete(@Nullable Output delete) { + $.delete = delete; + return this; + } + + /** + * @param delete A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + * @return builder + * + */ + public Builder delete(String delete) { + return delete(Output.of(delete)); + } + + /** + * @param update A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + * @return builder + * + */ + public Builder update(@Nullable Output update) { + $.update = update; + return this; + } + + /** + * @param update A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + * @return builder + * + */ + public Builder update(String update) { + return update(Output.of(update)); + } + + public DbInstanceTimeoutsArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/outputs/DbInstanceLogDeliveryConfiguration.java b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/outputs/DbInstanceLogDeliveryConfiguration.java new file mode 100644 index 00000000000..67c717715cd --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/outputs/DbInstanceLogDeliveryConfiguration.java @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.timestreaminfluxdb.outputs; + +import com.pulumi.aws.timestreaminfluxdb.outputs.DbInstanceLogDeliveryConfigurationS3Configuration; +import com.pulumi.core.annotations.CustomType; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class DbInstanceLogDeliveryConfiguration { + /** + * @return Configuration for S3 bucket log delivery. + * + */ + private @Nullable DbInstanceLogDeliveryConfigurationS3Configuration s3Configuration; + + private DbInstanceLogDeliveryConfiguration() {} + /** + * @return Configuration for S3 bucket log delivery. + * + */ + public Optional s3Configuration() { + return Optional.ofNullable(this.s3Configuration); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(DbInstanceLogDeliveryConfiguration defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable DbInstanceLogDeliveryConfigurationS3Configuration s3Configuration; + public Builder() {} + public Builder(DbInstanceLogDeliveryConfiguration defaults) { + Objects.requireNonNull(defaults); + this.s3Configuration = defaults.s3Configuration; + } + + @CustomType.Setter + public Builder s3Configuration(@Nullable DbInstanceLogDeliveryConfigurationS3Configuration s3Configuration) { + + this.s3Configuration = s3Configuration; + return this; + } + public DbInstanceLogDeliveryConfiguration build() { + final var _resultValue = new DbInstanceLogDeliveryConfiguration(); + _resultValue.s3Configuration = s3Configuration; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/outputs/DbInstanceLogDeliveryConfigurationS3Configuration.java b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/outputs/DbInstanceLogDeliveryConfigurationS3Configuration.java new file mode 100644 index 00000000000..8779c162b4e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/outputs/DbInstanceLogDeliveryConfigurationS3Configuration.java @@ -0,0 +1,86 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.timestreaminfluxdb.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class DbInstanceLogDeliveryConfigurationS3Configuration { + /** + * @return Name of the S3 bucket to deliver logs to. + * + */ + private String bucketName; + /** + * @return Indicates whether log delivery to the S3 bucket is enabled. + * + * **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + * + */ + private Boolean enabled; + + private DbInstanceLogDeliveryConfigurationS3Configuration() {} + /** + * @return Name of the S3 bucket to deliver logs to. + * + */ + public String bucketName() { + return this.bucketName; + } + /** + * @return Indicates whether log delivery to the S3 bucket is enabled. + * + * **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + * + */ + public Boolean enabled() { + return this.enabled; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(DbInstanceLogDeliveryConfigurationS3Configuration defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String bucketName; + private Boolean enabled; + public Builder() {} + public Builder(DbInstanceLogDeliveryConfigurationS3Configuration defaults) { + Objects.requireNonNull(defaults); + this.bucketName = defaults.bucketName; + this.enabled = defaults.enabled; + } + + @CustomType.Setter + public Builder bucketName(String bucketName) { + if (bucketName == null) { + throw new MissingRequiredPropertyException("DbInstanceLogDeliveryConfigurationS3Configuration", "bucketName"); + } + this.bucketName = bucketName; + return this; + } + @CustomType.Setter + public Builder enabled(Boolean enabled) { + if (enabled == null) { + throw new MissingRequiredPropertyException("DbInstanceLogDeliveryConfigurationS3Configuration", "enabled"); + } + this.enabled = enabled; + return this; + } + public DbInstanceLogDeliveryConfigurationS3Configuration build() { + final var _resultValue = new DbInstanceLogDeliveryConfigurationS3Configuration(); + _resultValue.bucketName = bucketName; + _resultValue.enabled = enabled; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/outputs/DbInstanceTimeouts.java b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/outputs/DbInstanceTimeouts.java new file mode 100644 index 00000000000..d1096b88f44 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/aws/timestreaminfluxdb/outputs/DbInstanceTimeouts.java @@ -0,0 +1,99 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.aws.timestreaminfluxdb.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class DbInstanceTimeouts { + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + private @Nullable String create; + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + */ + private @Nullable String delete; + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + private @Nullable String update; + + private DbInstanceTimeouts() {} + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + public Optional create() { + return Optional.ofNullable(this.create); + } + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + * + */ + public Optional delete() { + return Optional.ofNullable(this.delete); + } + /** + * @return A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + * + */ + public Optional update() { + return Optional.ofNullable(this.update); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(DbInstanceTimeouts defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String create; + private @Nullable String delete; + private @Nullable String update; + public Builder() {} + public Builder(DbInstanceTimeouts defaults) { + Objects.requireNonNull(defaults); + this.create = defaults.create; + this.delete = defaults.delete; + this.update = defaults.update; + } + + @CustomType.Setter + public Builder create(@Nullable String create) { + + this.create = create; + return this; + } + @CustomType.Setter + public Builder delete(@Nullable String delete) { + + this.delete = delete; + return this; + } + @CustomType.Setter + public Builder update(@Nullable String update) { + + this.update = update; + return this; + } + public DbInstanceTimeouts build() { + final var _resultValue = new DbInstanceTimeouts(); + _resultValue.create = create; + _resultValue.delete = delete; + _resultValue.update = update; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/aws/wafv2/WebAcl.java b/sdk/java/src/main/java/com/pulumi/aws/wafv2/WebAcl.java index 643363939a5..d49b07723bb 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/wafv2/WebAcl.java +++ b/sdk/java/src/main/java/com/pulumi/aws/wafv2/WebAcl.java @@ -172,6 +172,20 @@ public Output lockToken() { public Output name() { return this.name; } + /** + * Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + * + */ + @Export(name="ruleJson", refs={String.class}, tree="[0]") + private Output ruleJson; + + /** + * @return Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + * + */ + public Output> ruleJson() { + return Codegen.optional(this.ruleJson); + } /** * Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. * diff --git a/sdk/java/src/main/java/com/pulumi/aws/wafv2/WebAclArgs.java b/sdk/java/src/main/java/com/pulumi/aws/wafv2/WebAclArgs.java index 7208bc77444..f49cb649d1d 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/wafv2/WebAclArgs.java +++ b/sdk/java/src/main/java/com/pulumi/aws/wafv2/WebAclArgs.java @@ -130,6 +130,21 @@ public Optional> name() { return Optional.ofNullable(this.name); } + /** + * Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + * + */ + @Import(name="ruleJson") + private @Nullable Output ruleJson; + + /** + * @return Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + * + */ + public Optional> ruleJson() { + return Optional.ofNullable(this.ruleJson); + } + /** * Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. * @@ -215,6 +230,7 @@ private WebAclArgs(WebAclArgs $) { this.defaultAction = $.defaultAction; this.description = $.description; this.name = $.name; + this.ruleJson = $.ruleJson; this.rules = $.rules; this.scope = $.scope; this.tags = $.tags; @@ -397,6 +413,27 @@ public Builder name(String name) { return name(Output.of(name)); } + /** + * @param ruleJson Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + * + * @return builder + * + */ + public Builder ruleJson(@Nullable Output ruleJson) { + $.ruleJson = ruleJson; + return this; + } + + /** + * @param ruleJson Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + * + * @return builder + * + */ + public Builder ruleJson(String ruleJson) { + return ruleJson(Output.of(ruleJson)); + } + /** * @param rules Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. * diff --git a/sdk/java/src/main/java/com/pulumi/aws/wafv2/inputs/WebAclState.java b/sdk/java/src/main/java/com/pulumi/aws/wafv2/inputs/WebAclState.java index 225f9db489b..cf8cde59fa7 100644 --- a/sdk/java/src/main/java/com/pulumi/aws/wafv2/inputs/WebAclState.java +++ b/sdk/java/src/main/java/com/pulumi/aws/wafv2/inputs/WebAclState.java @@ -182,6 +182,21 @@ public Optional> name() { return Optional.ofNullable(this.name); } + /** + * Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + * + */ + @Import(name="ruleJson") + private @Nullable Output ruleJson; + + /** + * @return Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + * + */ + public Optional> ruleJson() { + return Optional.ofNullable(this.ruleJson); + } + /** * Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. * @@ -294,6 +309,7 @@ private WebAclState(WebAclState $) { this.description = $.description; this.lockToken = $.lockToken; this.name = $.name; + this.ruleJson = $.ruleJson; this.rules = $.rules; this.scope = $.scope; this.tags = $.tags; @@ -549,6 +565,27 @@ public Builder name(String name) { return name(Output.of(name)); } + /** + * @param ruleJson Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + * + * @return builder + * + */ + public Builder ruleJson(@Nullable Output ruleJson) { + $.ruleJson = ruleJson; + return this; + } + + /** + * @param ruleJson Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + * + * @return builder + * + */ + public Builder ruleJson(String ruleJson) { + return ruleJson(Output.of(ruleJson)); + } + /** * @param rules Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. * diff --git a/sdk/nodejs/appsync/graphQLApi.ts b/sdk/nodejs/appsync/graphQLApi.ts index f53a9498823..0726ebe20d3 100644 --- a/sdk/nodejs/appsync/graphQLApi.ts +++ b/sdk/nodejs/appsync/graphQLApi.ts @@ -47,6 +47,10 @@ export class GraphQLApi extends pulumi.CustomResource { * Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA` */ public readonly authenticationType!: pulumi.Output; + /** + * Enables and controls the enhanced metrics feature. See `enhancedMetricsConfig` Block for details. + */ + public readonly enhancedMetricsConfig!: pulumi.Output; /** * Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). */ @@ -61,6 +65,8 @@ export class GraphQLApi extends pulumi.CustomResource { public readonly logConfig!: pulumi.Output; /** * User-supplied name for the GraphSQL API. + * + * The following arguments are optional: */ public readonly name!: pulumi.Output; /** @@ -124,6 +130,7 @@ export class GraphQLApi extends pulumi.CustomResource { resourceInputs["additionalAuthenticationProviders"] = state ? state.additionalAuthenticationProviders : undefined; resourceInputs["arn"] = state ? state.arn : undefined; resourceInputs["authenticationType"] = state ? state.authenticationType : undefined; + resourceInputs["enhancedMetricsConfig"] = state ? state.enhancedMetricsConfig : undefined; resourceInputs["introspectionConfig"] = state ? state.introspectionConfig : undefined; resourceInputs["lambdaAuthorizerConfig"] = state ? state.lambdaAuthorizerConfig : undefined; resourceInputs["logConfig"] = state ? state.logConfig : undefined; @@ -145,6 +152,7 @@ export class GraphQLApi extends pulumi.CustomResource { } resourceInputs["additionalAuthenticationProviders"] = args ? args.additionalAuthenticationProviders : undefined; resourceInputs["authenticationType"] = args ? args.authenticationType : undefined; + resourceInputs["enhancedMetricsConfig"] = args ? args.enhancedMetricsConfig : undefined; resourceInputs["introspectionConfig"] = args ? args.introspectionConfig : undefined; resourceInputs["lambdaAuthorizerConfig"] = args ? args.lambdaAuthorizerConfig : undefined; resourceInputs["logConfig"] = args ? args.logConfig : undefined; @@ -182,6 +190,10 @@ export interface GraphQLApiState { * Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA` */ authenticationType?: pulumi.Input; + /** + * Enables and controls the enhanced metrics feature. See `enhancedMetricsConfig` Block for details. + */ + enhancedMetricsConfig?: pulumi.Input; /** * Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). */ @@ -196,6 +208,8 @@ export interface GraphQLApiState { logConfig?: pulumi.Input; /** * User-supplied name for the GraphSQL API. + * + * The following arguments are optional: */ name?: pulumi.Input; /** @@ -256,6 +270,10 @@ export interface GraphQLApiArgs { * Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA` */ authenticationType: pulumi.Input; + /** + * Enables and controls the enhanced metrics feature. See `enhancedMetricsConfig` Block for details. + */ + enhancedMetricsConfig?: pulumi.Input; /** * Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). */ @@ -270,6 +288,8 @@ export interface GraphQLApiArgs { logConfig?: pulumi.Input; /** * User-supplied name for the GraphSQL API. + * + * The following arguments are optional: */ name?: pulumi.Input; /** diff --git a/sdk/nodejs/chatbot/index.ts b/sdk/nodejs/chatbot/index.ts index 40e6e68a772..73652809705 100644 --- a/sdk/nodejs/chatbot/index.ts +++ b/sdk/nodejs/chatbot/index.ts @@ -1,6 +1,7 @@ // *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** +import * as pulumi from "@pulumi/pulumi"; import * as utilities from "../utilities"; // Export members: @@ -9,3 +10,29 @@ export const getSlackWorkspace: typeof import("./getSlackWorkspace").getSlackWor export const getSlackWorkspaceOutput: typeof import("./getSlackWorkspace").getSlackWorkspaceOutput = null as any; utilities.lazyLoad(exports, ["getSlackWorkspace","getSlackWorkspaceOutput"], () => require("./getSlackWorkspace")); +export { SlackChannelConfigurationArgs, SlackChannelConfigurationState } from "./slackChannelConfiguration"; +export type SlackChannelConfiguration = import("./slackChannelConfiguration").SlackChannelConfiguration; +export const SlackChannelConfiguration: typeof import("./slackChannelConfiguration").SlackChannelConfiguration = null as any; +utilities.lazyLoad(exports, ["SlackChannelConfiguration"], () => require("./slackChannelConfiguration")); + +export { TeamsChannelConfigurationArgs, TeamsChannelConfigurationState } from "./teamsChannelConfiguration"; +export type TeamsChannelConfiguration = import("./teamsChannelConfiguration").TeamsChannelConfiguration; +export const TeamsChannelConfiguration: typeof import("./teamsChannelConfiguration").TeamsChannelConfiguration = null as any; +utilities.lazyLoad(exports, ["TeamsChannelConfiguration"], () => require("./teamsChannelConfiguration")); + + +const _module = { + version: utilities.getVersion(), + construct: (name: string, type: string, urn: string): pulumi.Resource => { + switch (type) { + case "aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration": + return new SlackChannelConfiguration(name, undefined, { urn }) + case "aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration": + return new TeamsChannelConfiguration(name, undefined, { urn }) + default: + throw new Error(`unknown resource type ${type}`); + } + }, +}; +pulumi.runtime.registerResourceModule("aws", "chatbot/slackChannelConfiguration", _module) +pulumi.runtime.registerResourceModule("aws", "chatbot/teamsChannelConfiguration", _module) diff --git a/sdk/nodejs/chatbot/slackChannelConfiguration.ts b/sdk/nodejs/chatbot/slackChannelConfiguration.ts new file mode 100644 index 00000000000..4a3278700fc --- /dev/null +++ b/sdk/nodejs/chatbot/slackChannelConfiguration.ts @@ -0,0 +1,293 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "../types/input"; +import * as outputs from "../types/output"; +import * as enums from "../types/enums"; +import * as utilities from "../utilities"; + +/** + * Resource for managing an AWS Chatbot Slack Channel Configuration. + * + * ## Example Usage + * + * ### Basic Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const test = new aws.chatbot.SlackChannelConfiguration("test", { + * configurationName: "min-slaka-kanal", + * iamRoleArn: testAwsIamRole.arn, + * slackChannelId: "C07EZ1ABC23", + * slackTeamId: "T07EA123LEP", + * tags: { + * Name: "min-slaka-kanal", + * }, + * }); + * ``` + * + * ## Import + * + * Using `pulumi import`, import Chatbot Slack Channel Configuration using the `chat_configuration_arn`. For example: + * + * ```sh + * $ pulumi import aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration example arn:aws:chatbot::012345678901:chat-configuration/slack-channel/min-slaka-kanal + * ``` + */ +export class SlackChannelConfiguration extends pulumi.CustomResource { + /** + * Get an existing SlackChannelConfiguration resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: SlackChannelConfigurationState, opts?: pulumi.CustomResourceOptions): SlackChannelConfiguration { + return new SlackChannelConfiguration(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration'; + + /** + * Returns true if the given object is an instance of SlackChannelConfiguration. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is SlackChannelConfiguration { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === SlackChannelConfiguration.__pulumiType; + } + + /** + * ARN of the Slack channel configuration. + */ + public /*out*/ readonly chatConfigurationArn!: pulumi.Output; + /** + * Name of the Slack channel configuration. + */ + public readonly configurationName!: pulumi.Output; + /** + * List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + */ + public readonly guardrailPolicyArns!: pulumi.Output; + /** + * User-defined role that AWS Chatbot assumes. This is not the service-linked role. + */ + public readonly iamRoleArn!: pulumi.Output; + /** + * Logging levels include `ERROR`, `INFO`, or `NONE`. + */ + public readonly loggingLevel!: pulumi.Output; + /** + * ID of the Slack channel. For example, `C07EZ1ABC23`. + */ + public readonly slackChannelId!: pulumi.Output; + /** + * Name of the Slack channel. + */ + public /*out*/ readonly slackChannelName!: pulumi.Output; + /** + * ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + * + * The following arguments are optional: + */ + public readonly slackTeamId!: pulumi.Output; + /** + * Name of the Slack team. + */ + public /*out*/ readonly slackTeamName!: pulumi.Output; + /** + * ARNs of the SNS topics that deliver notifications to AWS Chatbot. + */ + public readonly snsTopicArns!: pulumi.Output; + /** + * Map of tags assigned to the resource. + */ + public readonly tags!: pulumi.Output<{[key: string]: string} | undefined>; + /** + * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + * + * @deprecated Please use `tags` instead. + */ + public /*out*/ readonly tagsAll!: pulumi.Output<{[key: string]: string}>; + public readonly timeouts!: pulumi.Output; + /** + * Enables use of a user role requirement in your chat configuration. + */ + public readonly userAuthorizationRequired!: pulumi.Output; + + /** + * Create a SlackChannelConfiguration resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: SlackChannelConfigurationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: SlackChannelConfigurationArgs | SlackChannelConfigurationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as SlackChannelConfigurationState | undefined; + resourceInputs["chatConfigurationArn"] = state ? state.chatConfigurationArn : undefined; + resourceInputs["configurationName"] = state ? state.configurationName : undefined; + resourceInputs["guardrailPolicyArns"] = state ? state.guardrailPolicyArns : undefined; + resourceInputs["iamRoleArn"] = state ? state.iamRoleArn : undefined; + resourceInputs["loggingLevel"] = state ? state.loggingLevel : undefined; + resourceInputs["slackChannelId"] = state ? state.slackChannelId : undefined; + resourceInputs["slackChannelName"] = state ? state.slackChannelName : undefined; + resourceInputs["slackTeamId"] = state ? state.slackTeamId : undefined; + resourceInputs["slackTeamName"] = state ? state.slackTeamName : undefined; + resourceInputs["snsTopicArns"] = state ? state.snsTopicArns : undefined; + resourceInputs["tags"] = state ? state.tags : undefined; + resourceInputs["tagsAll"] = state ? state.tagsAll : undefined; + resourceInputs["timeouts"] = state ? state.timeouts : undefined; + resourceInputs["userAuthorizationRequired"] = state ? state.userAuthorizationRequired : undefined; + } else { + const args = argsOrState as SlackChannelConfigurationArgs | undefined; + if ((!args || args.configurationName === undefined) && !opts.urn) { + throw new Error("Missing required property 'configurationName'"); + } + if ((!args || args.iamRoleArn === undefined) && !opts.urn) { + throw new Error("Missing required property 'iamRoleArn'"); + } + if ((!args || args.slackChannelId === undefined) && !opts.urn) { + throw new Error("Missing required property 'slackChannelId'"); + } + if ((!args || args.slackTeamId === undefined) && !opts.urn) { + throw new Error("Missing required property 'slackTeamId'"); + } + resourceInputs["configurationName"] = args ? args.configurationName : undefined; + resourceInputs["guardrailPolicyArns"] = args ? args.guardrailPolicyArns : undefined; + resourceInputs["iamRoleArn"] = args ? args.iamRoleArn : undefined; + resourceInputs["loggingLevel"] = args ? args.loggingLevel : undefined; + resourceInputs["slackChannelId"] = args ? args.slackChannelId : undefined; + resourceInputs["slackTeamId"] = args ? args.slackTeamId : undefined; + resourceInputs["snsTopicArns"] = args ? args.snsTopicArns : undefined; + resourceInputs["tags"] = args ? args.tags : undefined; + resourceInputs["timeouts"] = args ? args.timeouts : undefined; + resourceInputs["userAuthorizationRequired"] = args ? args.userAuthorizationRequired : undefined; + resourceInputs["chatConfigurationArn"] = undefined /*out*/; + resourceInputs["slackChannelName"] = undefined /*out*/; + resourceInputs["slackTeamName"] = undefined /*out*/; + resourceInputs["tagsAll"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(SlackChannelConfiguration.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering SlackChannelConfiguration resources. + */ +export interface SlackChannelConfigurationState { + /** + * ARN of the Slack channel configuration. + */ + chatConfigurationArn?: pulumi.Input; + /** + * Name of the Slack channel configuration. + */ + configurationName?: pulumi.Input; + /** + * List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + */ + guardrailPolicyArns?: pulumi.Input[]>; + /** + * User-defined role that AWS Chatbot assumes. This is not the service-linked role. + */ + iamRoleArn?: pulumi.Input; + /** + * Logging levels include `ERROR`, `INFO`, or `NONE`. + */ + loggingLevel?: pulumi.Input; + /** + * ID of the Slack channel. For example, `C07EZ1ABC23`. + */ + slackChannelId?: pulumi.Input; + /** + * Name of the Slack channel. + */ + slackChannelName?: pulumi.Input; + /** + * ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + * + * The following arguments are optional: + */ + slackTeamId?: pulumi.Input; + /** + * Name of the Slack team. + */ + slackTeamName?: pulumi.Input; + /** + * ARNs of the SNS topics that deliver notifications to AWS Chatbot. + */ + snsTopicArns?: pulumi.Input[]>; + /** + * Map of tags assigned to the resource. + */ + tags?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + * + * @deprecated Please use `tags` instead. + */ + tagsAll?: pulumi.Input<{[key: string]: pulumi.Input}>; + timeouts?: pulumi.Input; + /** + * Enables use of a user role requirement in your chat configuration. + */ + userAuthorizationRequired?: pulumi.Input; +} + +/** + * The set of arguments for constructing a SlackChannelConfiguration resource. + */ +export interface SlackChannelConfigurationArgs { + /** + * Name of the Slack channel configuration. + */ + configurationName: pulumi.Input; + /** + * List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + */ + guardrailPolicyArns?: pulumi.Input[]>; + /** + * User-defined role that AWS Chatbot assumes. This is not the service-linked role. + */ + iamRoleArn: pulumi.Input; + /** + * Logging levels include `ERROR`, `INFO`, or `NONE`. + */ + loggingLevel?: pulumi.Input; + /** + * ID of the Slack channel. For example, `C07EZ1ABC23`. + */ + slackChannelId: pulumi.Input; + /** + * ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + * + * The following arguments are optional: + */ + slackTeamId: pulumi.Input; + /** + * ARNs of the SNS topics that deliver notifications to AWS Chatbot. + */ + snsTopicArns?: pulumi.Input[]>; + /** + * Map of tags assigned to the resource. + */ + tags?: pulumi.Input<{[key: string]: pulumi.Input}>; + timeouts?: pulumi.Input; + /** + * Enables use of a user role requirement in your chat configuration. + */ + userAuthorizationRequired?: pulumi.Input; +} diff --git a/sdk/nodejs/chatbot/teamsChannelConfiguration.ts b/sdk/nodejs/chatbot/teamsChannelConfiguration.ts new file mode 100644 index 00000000000..a71386d779a --- /dev/null +++ b/sdk/nodejs/chatbot/teamsChannelConfiguration.ts @@ -0,0 +1,321 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "../types/input"; +import * as outputs from "../types/output"; +import * as enums from "../types/enums"; +import * as utilities from "../utilities"; + +/** + * Resource for managing an AWS Chatbot Microsoft Teams Channel Configuration. + * + * > **NOTE:** We provide this resource on a best-effort basis. If you are able to test it and find it useful, we welcome your input at GitHub. + * + * ## Example Usage + * + * ### Basic Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const test = new aws.chatbot.TeamsChannelConfiguration("test", { + * channelId: "C07EZ1ABC23", + * configurationName: "mitt-lags-kanal", + * iamRoleArn: testAwsIamRole.arn, + * teamId: "74361522-da01-538d-aa2e-ac7918c6bb92", + * tenantId: "1234", + * tags: { + * Name: "mitt-lags-kanal", + * }, + * }); + * ``` + * + * ## Import + * + * Using `pulumi import`, import Chatbot Microsoft Teams Channel Configuration using the `team_id`. For example: + * + * ```sh + * $ pulumi import aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration example 5f4f15d2-b958-522a-8333-124aa8bf0925 + * ``` + */ +export class TeamsChannelConfiguration extends pulumi.CustomResource { + /** + * Get an existing TeamsChannelConfiguration resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: TeamsChannelConfigurationState, opts?: pulumi.CustomResourceOptions): TeamsChannelConfiguration { + return new TeamsChannelConfiguration(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration'; + + /** + * Returns true if the given object is an instance of TeamsChannelConfiguration. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is TeamsChannelConfiguration { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === TeamsChannelConfiguration.__pulumiType; + } + + /** + * ID of the Microsoft Teams channel. + */ + public readonly channelId!: pulumi.Output; + /** + * Name of the Microsoft Teams channel. + */ + public readonly channelName!: pulumi.Output; + /** + * ARN of the Microsoft Teams channel configuration. + */ + public /*out*/ readonly chatConfigurationArn!: pulumi.Output; + /** + * Name of the Microsoft Teams channel configuration. + */ + public readonly configurationName!: pulumi.Output; + /** + * List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + */ + public readonly guardrailPolicyArns!: pulumi.Output; + /** + * ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + */ + public readonly iamRoleArn!: pulumi.Output; + /** + * Logging levels include `ERROR`, `INFO`, or `NONE`. + */ + public readonly loggingLevel!: pulumi.Output; + /** + * ARNs of the SNS topics that deliver notifications to AWS Chatbot. + */ + public readonly snsTopicArns!: pulumi.Output; + /** + * Map of tags assigned to the resource. + */ + public readonly tags!: pulumi.Output<{[key: string]: string} | undefined>; + /** + * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + * + * @deprecated Please use `tags` instead. + */ + public /*out*/ readonly tagsAll!: pulumi.Output<{[key: string]: string}>; + /** + * ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + */ + public readonly teamId!: pulumi.Output; + /** + * Name of the Microsoft Teams team. + */ + public readonly teamName!: pulumi.Output; + /** + * ID of the Microsoft Teams tenant. + * + * The following arguments are optional: + */ + public readonly tenantId!: pulumi.Output; + public readonly timeouts!: pulumi.Output; + /** + * Enables use of a user role requirement in your chat configuration. + */ + public readonly userAuthorizationRequired!: pulumi.Output; + + /** + * Create a TeamsChannelConfiguration resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: TeamsChannelConfigurationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: TeamsChannelConfigurationArgs | TeamsChannelConfigurationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as TeamsChannelConfigurationState | undefined; + resourceInputs["channelId"] = state ? state.channelId : undefined; + resourceInputs["channelName"] = state ? state.channelName : undefined; + resourceInputs["chatConfigurationArn"] = state ? state.chatConfigurationArn : undefined; + resourceInputs["configurationName"] = state ? state.configurationName : undefined; + resourceInputs["guardrailPolicyArns"] = state ? state.guardrailPolicyArns : undefined; + resourceInputs["iamRoleArn"] = state ? state.iamRoleArn : undefined; + resourceInputs["loggingLevel"] = state ? state.loggingLevel : undefined; + resourceInputs["snsTopicArns"] = state ? state.snsTopicArns : undefined; + resourceInputs["tags"] = state ? state.tags : undefined; + resourceInputs["tagsAll"] = state ? state.tagsAll : undefined; + resourceInputs["teamId"] = state ? state.teamId : undefined; + resourceInputs["teamName"] = state ? state.teamName : undefined; + resourceInputs["tenantId"] = state ? state.tenantId : undefined; + resourceInputs["timeouts"] = state ? state.timeouts : undefined; + resourceInputs["userAuthorizationRequired"] = state ? state.userAuthorizationRequired : undefined; + } else { + const args = argsOrState as TeamsChannelConfigurationArgs | undefined; + if ((!args || args.channelId === undefined) && !opts.urn) { + throw new Error("Missing required property 'channelId'"); + } + if ((!args || args.configurationName === undefined) && !opts.urn) { + throw new Error("Missing required property 'configurationName'"); + } + if ((!args || args.iamRoleArn === undefined) && !opts.urn) { + throw new Error("Missing required property 'iamRoleArn'"); + } + if ((!args || args.teamId === undefined) && !opts.urn) { + throw new Error("Missing required property 'teamId'"); + } + if ((!args || args.tenantId === undefined) && !opts.urn) { + throw new Error("Missing required property 'tenantId'"); + } + resourceInputs["channelId"] = args ? args.channelId : undefined; + resourceInputs["channelName"] = args ? args.channelName : undefined; + resourceInputs["configurationName"] = args ? args.configurationName : undefined; + resourceInputs["guardrailPolicyArns"] = args ? args.guardrailPolicyArns : undefined; + resourceInputs["iamRoleArn"] = args ? args.iamRoleArn : undefined; + resourceInputs["loggingLevel"] = args ? args.loggingLevel : undefined; + resourceInputs["snsTopicArns"] = args ? args.snsTopicArns : undefined; + resourceInputs["tags"] = args ? args.tags : undefined; + resourceInputs["teamId"] = args ? args.teamId : undefined; + resourceInputs["teamName"] = args ? args.teamName : undefined; + resourceInputs["tenantId"] = args ? args.tenantId : undefined; + resourceInputs["timeouts"] = args ? args.timeouts : undefined; + resourceInputs["userAuthorizationRequired"] = args ? args.userAuthorizationRequired : undefined; + resourceInputs["chatConfigurationArn"] = undefined /*out*/; + resourceInputs["tagsAll"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(TeamsChannelConfiguration.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering TeamsChannelConfiguration resources. + */ +export interface TeamsChannelConfigurationState { + /** + * ID of the Microsoft Teams channel. + */ + channelId?: pulumi.Input; + /** + * Name of the Microsoft Teams channel. + */ + channelName?: pulumi.Input; + /** + * ARN of the Microsoft Teams channel configuration. + */ + chatConfigurationArn?: pulumi.Input; + /** + * Name of the Microsoft Teams channel configuration. + */ + configurationName?: pulumi.Input; + /** + * List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + */ + guardrailPolicyArns?: pulumi.Input[]>; + /** + * ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + */ + iamRoleArn?: pulumi.Input; + /** + * Logging levels include `ERROR`, `INFO`, or `NONE`. + */ + loggingLevel?: pulumi.Input; + /** + * ARNs of the SNS topics that deliver notifications to AWS Chatbot. + */ + snsTopicArns?: pulumi.Input[]>; + /** + * Map of tags assigned to the resource. + */ + tags?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + * + * @deprecated Please use `tags` instead. + */ + tagsAll?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + */ + teamId?: pulumi.Input; + /** + * Name of the Microsoft Teams team. + */ + teamName?: pulumi.Input; + /** + * ID of the Microsoft Teams tenant. + * + * The following arguments are optional: + */ + tenantId?: pulumi.Input; + timeouts?: pulumi.Input; + /** + * Enables use of a user role requirement in your chat configuration. + */ + userAuthorizationRequired?: pulumi.Input; +} + +/** + * The set of arguments for constructing a TeamsChannelConfiguration resource. + */ +export interface TeamsChannelConfigurationArgs { + /** + * ID of the Microsoft Teams channel. + */ + channelId: pulumi.Input; + /** + * Name of the Microsoft Teams channel. + */ + channelName?: pulumi.Input; + /** + * Name of the Microsoft Teams channel configuration. + */ + configurationName: pulumi.Input; + /** + * List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + */ + guardrailPolicyArns?: pulumi.Input[]>; + /** + * ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + */ + iamRoleArn: pulumi.Input; + /** + * Logging levels include `ERROR`, `INFO`, or `NONE`. + */ + loggingLevel?: pulumi.Input; + /** + * ARNs of the SNS topics that deliver notifications to AWS Chatbot. + */ + snsTopicArns?: pulumi.Input[]>; + /** + * Map of tags assigned to the resource. + */ + tags?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + */ + teamId: pulumi.Input; + /** + * Name of the Microsoft Teams team. + */ + teamName?: pulumi.Input; + /** + * ID of the Microsoft Teams tenant. + * + * The following arguments are optional: + */ + tenantId: pulumi.Input; + timeouts?: pulumi.Input; + /** + * Enables use of a user role requirement in your chat configuration. + */ + userAuthorizationRequired?: pulumi.Input; +} diff --git a/sdk/nodejs/datazone/glossary.ts b/sdk/nodejs/datazone/glossary.ts new file mode 100644 index 00000000000..f6b17c5496f --- /dev/null +++ b/sdk/nodejs/datazone/glossary.ts @@ -0,0 +1,237 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "../utilities"; + +/** + * Resource for managing an AWS DataZone Glossary. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const domainExecutionRole = new aws.iam.Role("domain_execution_role", { + * name: "example_name", + * assumeRolePolicy: JSON.stringify({ + * Version: "2012-10-17", + * Statement: [ + * { + * Action: [ + * "sts:AssumeRole", + * "sts:TagSession", + * ], + * Effect: "Allow", + * Principal: { + * Service: "datazone.amazonaws.com", + * }, + * }, + * { + * Action: [ + * "sts:AssumeRole", + * "sts:TagSession", + * ], + * Effect: "Allow", + * Principal: { + * Service: "cloudformation.amazonaws.com", + * }, + * }, + * ], + * }), + * inlinePolicies: [{ + * name: "example_name", + * policy: JSON.stringify({ + * Version: "2012-10-17", + * Statement: [{ + * Action: [ + * "datazone:*", + * "ram:*", + * "sso:*", + * "kms:*", + * ], + * Effect: "Allow", + * Resource: "*", + * }], + * }), + * }], + * }); + * const test = new aws.datazone.Domain("test", { + * name: "example_name", + * domainExecutionRole: domainExecutionRole.arn, + * }); + * const testSecurityGroup = new aws.ec2.SecurityGroup("test", {name: "example_name"}); + * const testProject = new aws.datazone.Project("test", { + * domainIdentifier: test.id, + * glossaryTerms: ["2N8w6XJCwZf"], + * name: "example_name", + * description: "desc", + * skipDeletionCheck: true, + * }); + * const testGlossary = new aws.datazone.Glossary("test", { + * description: "description", + * name: "example_name", + * owningProjectIdentifier: testProject.id, + * status: "DISABLED", + * domainIdentifier: testProject.domainIdentifier, + * }); + * ``` + * + * ### Basic Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const test = new aws.datazone.Glossary("test", { + * description: "description", + * name: "example_name", + * owningProjectIdentifier: testAwsDatazoneProject.id, + * status: "DISABLED", + * domainIdentifier: testAwsDatazoneProject.domainIdentifier, + * }); + * ``` + * + * ## Import + * + * Using `pulumi import`, import DataZone Glossary using the import Datazone Glossary using a comma-delimited string combining the domain id, glossary id, and the id of the project it's under. For example: + * + * ```sh + * $ pulumi import aws:datazone/glossary:Glossary example domain-id,glossary-id,owning-project-identifier + * ``` + */ +export class Glossary extends pulumi.CustomResource { + /** + * Get an existing Glossary resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: GlossaryState, opts?: pulumi.CustomResourceOptions): Glossary { + return new Glossary(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'aws:datazone/glossary:Glossary'; + + /** + * Returns true if the given object is an instance of Glossary. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is Glossary { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === Glossary.__pulumiType; + } + + /** + * Description of the glossary. Must have a length between 0 and 4096. + */ + public readonly description!: pulumi.Output; + public readonly domainIdentifier!: pulumi.Output; + /** + * Name of the glossary. Must have length between 1 and 256. + */ + public readonly name!: pulumi.Output; + /** + * ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + * + * The following arguments are optional: + */ + public readonly owningProjectIdentifier!: pulumi.Output; + /** + * Status of business glossary. Valid values are DISABLED and ENABLED. + */ + public readonly status!: pulumi.Output; + + /** + * Create a Glossary resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: GlossaryArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: GlossaryArgs | GlossaryState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as GlossaryState | undefined; + resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["domainIdentifier"] = state ? state.domainIdentifier : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["owningProjectIdentifier"] = state ? state.owningProjectIdentifier : undefined; + resourceInputs["status"] = state ? state.status : undefined; + } else { + const args = argsOrState as GlossaryArgs | undefined; + if ((!args || args.domainIdentifier === undefined) && !opts.urn) { + throw new Error("Missing required property 'domainIdentifier'"); + } + if ((!args || args.owningProjectIdentifier === undefined) && !opts.urn) { + throw new Error("Missing required property 'owningProjectIdentifier'"); + } + resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["domainIdentifier"] = args ? args.domainIdentifier : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["owningProjectIdentifier"] = args ? args.owningProjectIdentifier : undefined; + resourceInputs["status"] = args ? args.status : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(Glossary.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering Glossary resources. + */ +export interface GlossaryState { + /** + * Description of the glossary. Must have a length between 0 and 4096. + */ + description?: pulumi.Input; + domainIdentifier?: pulumi.Input; + /** + * Name of the glossary. Must have length between 1 and 256. + */ + name?: pulumi.Input; + /** + * ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + * + * The following arguments are optional: + */ + owningProjectIdentifier?: pulumi.Input; + /** + * Status of business glossary. Valid values are DISABLED and ENABLED. + */ + status?: pulumi.Input; +} + +/** + * The set of arguments for constructing a Glossary resource. + */ +export interface GlossaryArgs { + /** + * Description of the glossary. Must have a length between 0 and 4096. + */ + description?: pulumi.Input; + domainIdentifier: pulumi.Input; + /** + * Name of the glossary. Must have length between 1 and 256. + */ + name?: pulumi.Input; + /** + * ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + * + * The following arguments are optional: + */ + owningProjectIdentifier: pulumi.Input; + /** + * Status of business glossary. Valid values are DISABLED and ENABLED. + */ + status?: pulumi.Input; +} diff --git a/sdk/nodejs/datazone/index.ts b/sdk/nodejs/datazone/index.ts index e8066d18708..491f477a519 100644 --- a/sdk/nodejs/datazone/index.ts +++ b/sdk/nodejs/datazone/index.ts @@ -20,6 +20,11 @@ export const getEnvironmentBlueprint: typeof import("./getEnvironmentBlueprint") export const getEnvironmentBlueprintOutput: typeof import("./getEnvironmentBlueprint").getEnvironmentBlueprintOutput = null as any; utilities.lazyLoad(exports, ["getEnvironmentBlueprint","getEnvironmentBlueprintOutput"], () => require("./getEnvironmentBlueprint")); +export { GlossaryArgs, GlossaryState } from "./glossary"; +export type Glossary = import("./glossary").Glossary; +export const Glossary: typeof import("./glossary").Glossary = null as any; +utilities.lazyLoad(exports, ["Glossary"], () => require("./glossary")); + export { ProjectArgs, ProjectState } from "./project"; export type Project = import("./project").Project; export const Project: typeof import("./project").Project = null as any; @@ -34,6 +39,8 @@ const _module = { return new Domain(name, undefined, { urn }) case "aws:datazone/environmentBlueprintConfiguration:EnvironmentBlueprintConfiguration": return new EnvironmentBlueprintConfiguration(name, undefined, { urn }) + case "aws:datazone/glossary:Glossary": + return new Glossary(name, undefined, { urn }) case "aws:datazone/project:Project": return new Project(name, undefined, { urn }) default: @@ -43,4 +50,5 @@ const _module = { }; pulumi.runtime.registerResourceModule("aws", "datazone/domain", _module) pulumi.runtime.registerResourceModule("aws", "datazone/environmentBlueprintConfiguration", _module) +pulumi.runtime.registerResourceModule("aws", "datazone/glossary", _module) pulumi.runtime.registerResourceModule("aws", "datazone/project", _module) diff --git a/sdk/nodejs/ec2/vpc.ts b/sdk/nodejs/ec2/vpc.ts index c5c9a76aeaf..fcd1f898c3f 100644 --- a/sdk/nodejs/ec2/vpc.ts +++ b/sdk/nodejs/ec2/vpc.ts @@ -165,7 +165,7 @@ export class Vpc extends pulumi.CustomResource { */ public readonly ipv6IpamPoolId!: pulumi.Output; /** - * Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values: `56`. + * Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values are from `44` to `60` in increments of 4. */ public readonly ipv6NetmaskLength!: pulumi.Output; /** @@ -327,7 +327,7 @@ export interface VpcState { */ ipv6IpamPoolId?: pulumi.Input; /** - * Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values: `56`. + * Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values are from `44` to `60` in increments of 4. */ ipv6NetmaskLength?: pulumi.Input; /** @@ -401,7 +401,7 @@ export interface VpcArgs { */ ipv6IpamPoolId?: pulumi.Input; /** - * Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values: `56`. + * Netmask length to request from IPAM Pool. Conflicts with `ipv6CidrBlock`. This can be omitted if IPAM pool as a `allocationDefaultNetmaskLength` set. Valid values are from `44` to `60` in increments of 4. */ ipv6NetmaskLength?: pulumi.Input; /** diff --git a/sdk/nodejs/ec2/vpcIpamPoolCidrAllocation.ts b/sdk/nodejs/ec2/vpcIpamPoolCidrAllocation.ts index 45d4b2f012e..0013b367a3c 100644 --- a/sdk/nodejs/ec2/vpcIpamPoolCidrAllocation.ts +++ b/sdk/nodejs/ec2/vpcIpamPoolCidrAllocation.ts @@ -120,7 +120,7 @@ export class VpcIpamPoolCidrAllocation extends pulumi.CustomResource { /** * The netmask length of the CIDR you would like to allocate to the IPAM pool. Valid Values: `0-128`. */ - public readonly netmaskLength!: pulumi.Output; + public readonly netmaskLength!: pulumi.Output; /** * The ID of the resource. */ diff --git a/sdk/nodejs/ec2/vpcIpv6CidrBlockAssociation.ts b/sdk/nodejs/ec2/vpcIpv6CidrBlockAssociation.ts index bd050ef8b7e..d5f0968cad0 100644 --- a/sdk/nodejs/ec2/vpcIpv6CidrBlockAssociation.ts +++ b/sdk/nodejs/ec2/vpcIpv6CidrBlockAssociation.ts @@ -59,17 +59,25 @@ export class VpcIpv6CidrBlockAssociation extends pulumi.CustomResource { } /** - * The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. + * Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6PamPoolId`, `ipv6Pool`, `ipv6CidrBlock` and `ipv6NetmaskLength`. + */ + public readonly assignGeneratedIpv6CidrBlock!: pulumi.Output; + /** + * The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. Conflicts with `assignGeneratedIpv6CidrBlock`. */ public readonly ipv6CidrBlock!: pulumi.Output; /** - * The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + * - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. */ - public readonly ipv6IpamPoolId!: pulumi.Output; + public readonly ipv6IpamPoolId!: pulumi.Output; /** - * The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `cidrBlock` are required + * The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `ipv6CidrBlock` are required. Conflicts with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. */ public readonly ipv6NetmaskLength!: pulumi.Output; + /** + * The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6PamPoolId`, `ipv6Pool`. + */ + public readonly ipv6Pool!: pulumi.Output; /** * The ID of the VPC to make the association with. */ @@ -88,21 +96,22 @@ export class VpcIpv6CidrBlockAssociation extends pulumi.CustomResource { opts = opts || {}; if (opts.id) { const state = argsOrState as VpcIpv6CidrBlockAssociationState | undefined; + resourceInputs["assignGeneratedIpv6CidrBlock"] = state ? state.assignGeneratedIpv6CidrBlock : undefined; resourceInputs["ipv6CidrBlock"] = state ? state.ipv6CidrBlock : undefined; resourceInputs["ipv6IpamPoolId"] = state ? state.ipv6IpamPoolId : undefined; resourceInputs["ipv6NetmaskLength"] = state ? state.ipv6NetmaskLength : undefined; + resourceInputs["ipv6Pool"] = state ? state.ipv6Pool : undefined; resourceInputs["vpcId"] = state ? state.vpcId : undefined; } else { const args = argsOrState as VpcIpv6CidrBlockAssociationArgs | undefined; - if ((!args || args.ipv6IpamPoolId === undefined) && !opts.urn) { - throw new Error("Missing required property 'ipv6IpamPoolId'"); - } if ((!args || args.vpcId === undefined) && !opts.urn) { throw new Error("Missing required property 'vpcId'"); } + resourceInputs["assignGeneratedIpv6CidrBlock"] = args ? args.assignGeneratedIpv6CidrBlock : undefined; resourceInputs["ipv6CidrBlock"] = args ? args.ipv6CidrBlock : undefined; resourceInputs["ipv6IpamPoolId"] = args ? args.ipv6IpamPoolId : undefined; resourceInputs["ipv6NetmaskLength"] = args ? args.ipv6NetmaskLength : undefined; + resourceInputs["ipv6Pool"] = args ? args.ipv6Pool : undefined; resourceInputs["vpcId"] = args ? args.vpcId : undefined; } opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); @@ -115,17 +124,25 @@ export class VpcIpv6CidrBlockAssociation extends pulumi.CustomResource { */ export interface VpcIpv6CidrBlockAssociationState { /** - * The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. + * Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6PamPoolId`, `ipv6Pool`, `ipv6CidrBlock` and `ipv6NetmaskLength`. + */ + assignGeneratedIpv6CidrBlock?: pulumi.Input; + /** + * The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. Conflicts with `assignGeneratedIpv6CidrBlock`. */ ipv6CidrBlock?: pulumi.Input; /** - * The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + * - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. */ ipv6IpamPoolId?: pulumi.Input; /** - * The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `cidrBlock` are required + * The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `ipv6CidrBlock` are required. Conflicts with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. */ ipv6NetmaskLength?: pulumi.Input; + /** + * The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6PamPoolId`, `ipv6Pool`. + */ + ipv6Pool?: pulumi.Input; /** * The ID of the VPC to make the association with. */ @@ -137,17 +154,25 @@ export interface VpcIpv6CidrBlockAssociationState { */ export interface VpcIpv6CidrBlockAssociationArgs { /** - * The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. + * Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6PamPoolId`, `ipv6Pool`, `ipv6CidrBlock` and `ipv6NetmaskLength`. + */ + assignGeneratedIpv6CidrBlock?: pulumi.Input; + /** + * The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6NetmaskLength`. This parameter is required if `ipv6NetmaskLength` is not set and the IPAM pool does not have `allocationDefaultNetmask` set. Conflicts with `assignGeneratedIpv6CidrBlock`. */ ipv6CidrBlock?: pulumi.Input; /** - * The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + * - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. */ - ipv6IpamPoolId: pulumi.Input; + ipv6IpamPoolId?: pulumi.Input; /** - * The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `cidrBlock` are required + * The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6IpamPoolId`. This parameter is optional if the IPAM pool has `allocationDefaultNetmask` set, otherwise it or `ipv6CidrBlock` are required. Conflicts with `assignGeneratedIpv6CidrBlock` and `ipv6IpamPoolId`. */ ipv6NetmaskLength?: pulumi.Input; + /** + * The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6PamPoolId`, `ipv6Pool`. + */ + ipv6Pool?: pulumi.Input; /** * The ID of the VPC to make the association with. */ diff --git a/sdk/nodejs/ecr/getRepositoryCreationTemplate.ts b/sdk/nodejs/ecr/getRepositoryCreationTemplate.ts new file mode 100644 index 00000000000..021247e5b2d --- /dev/null +++ b/sdk/nodejs/ecr/getRepositoryCreationTemplate.ts @@ -0,0 +1,123 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "../types/input"; +import * as outputs from "../types/output"; +import * as enums from "../types/enums"; +import * as utilities from "../utilities"; + +/** + * The ECR Repository Creation Template data source allows the template details to be retrieved for a Repository Creation Template. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const example = aws.ecr.getRepositoryCreationTemplate({ + * prefix: "example", + * }); + * ``` + */ +export function getRepositoryCreationTemplate(args: GetRepositoryCreationTemplateArgs, opts?: pulumi.InvokeOptions): Promise { + + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); + return pulumi.runtime.invoke("aws:ecr/getRepositoryCreationTemplate:getRepositoryCreationTemplate", { + "prefix": args.prefix, + "resourceTags": args.resourceTags, + }, opts); +} + +/** + * A collection of arguments for invoking getRepositoryCreationTemplate. + */ +export interface GetRepositoryCreationTemplateArgs { + /** + * The repository name prefix that the template matches against. + */ + prefix: string; + /** + * A map of tags to assign to any created repositories. + */ + resourceTags?: {[key: string]: string}; +} + +/** + * A collection of values returned by getRepositoryCreationTemplate. + */ +export interface GetRepositoryCreationTemplateResult { + /** + * Which features this template applies to. Contains one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + */ + readonly appliedFors: string[]; + /** + * The ARN of the custom role used for repository creation. + */ + readonly customRoleArn: string; + /** + * The description for this template. + */ + readonly description: string; + /** + * Encryption configuration for any created repositories. See Encryption Configuration below. + */ + readonly encryptionConfigurations: outputs.ecr.GetRepositoryCreationTemplateEncryptionConfiguration[]; + /** + * The provider-assigned unique ID for this managed resource. + */ + readonly id: string; + /** + * The tag mutability setting for any created repositories. + */ + readonly imageTagMutability: string; + /** + * The lifecycle policy document to apply to any created repositories. + */ + readonly lifecyclePolicy: string; + readonly prefix: string; + /** + * The registry ID the repository creation template applies to. + */ + readonly registryId: string; + /** + * The registry policy document to apply to any created repositories. + */ + readonly repositoryPolicy: string; + /** + * A map of tags to assign to any created repositories. + */ + readonly resourceTags: {[key: string]: string}; +} +/** + * The ECR Repository Creation Template data source allows the template details to be retrieved for a Repository Creation Template. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const example = aws.ecr.getRepositoryCreationTemplate({ + * prefix: "example", + * }); + * ``` + */ +export function getRepositoryCreationTemplateOutput(args: GetRepositoryCreationTemplateOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output { + return pulumi.output(args).apply((a: any) => getRepositoryCreationTemplate(a, opts)) +} + +/** + * A collection of arguments for invoking getRepositoryCreationTemplate. + */ +export interface GetRepositoryCreationTemplateOutputArgs { + /** + * The repository name prefix that the template matches against. + */ + prefix: pulumi.Input; + /** + * A map of tags to assign to any created repositories. + */ + resourceTags?: pulumi.Input<{[key: string]: pulumi.Input}>; +} diff --git a/sdk/nodejs/ecr/index.ts b/sdk/nodejs/ecr/index.ts index 3586882768d..514b690dc3c 100644 --- a/sdk/nodejs/ecr/index.ts +++ b/sdk/nodejs/ecr/index.ts @@ -40,6 +40,11 @@ export const getRepository: typeof import("./getRepository").getRepository = nul export const getRepositoryOutput: typeof import("./getRepository").getRepositoryOutput = null as any; utilities.lazyLoad(exports, ["getRepository","getRepositoryOutput"], () => require("./getRepository")); +export { GetRepositoryCreationTemplateArgs, GetRepositoryCreationTemplateResult, GetRepositoryCreationTemplateOutputArgs } from "./getRepositoryCreationTemplate"; +export const getRepositoryCreationTemplate: typeof import("./getRepositoryCreationTemplate").getRepositoryCreationTemplate = null as any; +export const getRepositoryCreationTemplateOutput: typeof import("./getRepositoryCreationTemplate").getRepositoryCreationTemplateOutput = null as any; +utilities.lazyLoad(exports, ["getRepositoryCreationTemplate","getRepositoryCreationTemplateOutput"], () => require("./getRepositoryCreationTemplate")); + export { LifecyclePolicyArgs, LifecyclePolicyState } from "./lifecyclePolicy"; export type LifecyclePolicy = import("./lifecyclePolicy").LifecyclePolicy; export const LifecyclePolicy: typeof import("./lifecyclePolicy").LifecyclePolicy = null as any; @@ -71,6 +76,11 @@ export type Repository = import("./repository").Repository; export const Repository: typeof import("./repository").Repository = null as any; utilities.lazyLoad(exports, ["Repository"], () => require("./repository")); +export { RepositoryCreationTemplateArgs, RepositoryCreationTemplateState } from "./repositoryCreationTemplate"; +export type RepositoryCreationTemplate = import("./repositoryCreationTemplate").RepositoryCreationTemplate; +export const RepositoryCreationTemplate: typeof import("./repositoryCreationTemplate").RepositoryCreationTemplate = null as any; +utilities.lazyLoad(exports, ["RepositoryCreationTemplate"], () => require("./repositoryCreationTemplate")); + export { RepositoryPolicyArgs, RepositoryPolicyState } from "./repositoryPolicy"; export type RepositoryPolicy = import("./repositoryPolicy").RepositoryPolicy; export const RepositoryPolicy: typeof import("./repositoryPolicy").RepositoryPolicy = null as any; @@ -93,6 +103,8 @@ const _module = { return new ReplicationConfiguration(name, undefined, { urn }) case "aws:ecr/repository:Repository": return new Repository(name, undefined, { urn }) + case "aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate": + return new RepositoryCreationTemplate(name, undefined, { urn }) case "aws:ecr/repositoryPolicy:RepositoryPolicy": return new RepositoryPolicy(name, undefined, { urn }) default: @@ -106,4 +118,5 @@ pulumi.runtime.registerResourceModule("aws", "ecr/registryPolicy", _module) pulumi.runtime.registerResourceModule("aws", "ecr/registryScanningConfiguration", _module) pulumi.runtime.registerResourceModule("aws", "ecr/replicationConfiguration", _module) pulumi.runtime.registerResourceModule("aws", "ecr/repository", _module) +pulumi.runtime.registerResourceModule("aws", "ecr/repositoryCreationTemplate", _module) pulumi.runtime.registerResourceModule("aws", "ecr/repositoryPolicy", _module) diff --git a/sdk/nodejs/ecr/repositoryCreationTemplate.ts b/sdk/nodejs/ecr/repositoryCreationTemplate.ts new file mode 100644 index 00000000000..906e3836d2d --- /dev/null +++ b/sdk/nodejs/ecr/repositoryCreationTemplate.ts @@ -0,0 +1,280 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "../types/input"; +import * as outputs from "../types/output"; +import * as enums from "../types/enums"; +import * as utilities from "../utilities"; + +/** + * Provides an Elastic Container Registry Repository Creation Template. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const example = aws.iam.getPolicyDocument({ + * statements: [{ + * sid: "new policy", + * effect: "Allow", + * principals: [{ + * type: "AWS", + * identifiers: ["123456789012"], + * }], + * actions: [ + * "ecr:GetDownloadUrlForLayer", + * "ecr:BatchGetImage", + * "ecr:BatchCheckLayerAvailability", + * "ecr:PutImage", + * "ecr:InitiateLayerUpload", + * "ecr:UploadLayerPart", + * "ecr:CompleteLayerUpload", + * "ecr:DescribeRepositories", + * "ecr:GetRepositoryPolicy", + * "ecr:ListImages", + * "ecr:DeleteRepository", + * "ecr:BatchDeleteImage", + * "ecr:SetRepositoryPolicy", + * "ecr:DeleteRepositoryPolicy", + * ], + * }], + * }); + * const exampleRepositoryCreationTemplate = new aws.ecr.RepositoryCreationTemplate("example", { + * prefix: "example", + * description: "An example template", + * imageTagMutability: "IMMUTABLE", + * customRoleArn: "arn:aws:iam::123456789012:role/example", + * appliedFors: ["PULL_THROUGH_CACHE"], + * encryptionConfigurations: [{ + * encryptionType: "AES256", + * }], + * repositoryPolicy: example.then(example => example.json), + * lifecyclePolicy: `{ + * "rules": [ + * { + * "rulePriority": 1, + * "description": "Expire images older than 14 days", + * "selection": { + * "tagStatus": "untagged", + * "countType": "sinceImagePushed", + * "countUnit": "days", + * "countNumber": 14 + * }, + * "action": { + * "type": "expire" + * } + * } + * ] + * } + * `, + * resourceTags: { + * Foo: "Bar", + * }, + * }); + * ``` + * + * ## Import + * + * Using `pulumi import`, import the ECR Repository Creating Templates using the `prefix`. For example: + * + * ```sh + * $ pulumi import aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate example example + * ``` + */ +export class RepositoryCreationTemplate extends pulumi.CustomResource { + /** + * Get an existing RepositoryCreationTemplate resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: RepositoryCreationTemplateState, opts?: pulumi.CustomResourceOptions): RepositoryCreationTemplate { + return new RepositoryCreationTemplate(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate'; + + /** + * Returns true if the given object is an instance of RepositoryCreationTemplate. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is RepositoryCreationTemplate { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === RepositoryCreationTemplate.__pulumiType; + } + + /** + * Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + */ + public readonly appliedFors!: pulumi.Output; + /** + * A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + */ + public readonly customRoleArn!: pulumi.Output; + /** + * The description for this template. + */ + public readonly description!: pulumi.Output; + /** + * Encryption configuration for any created repositories. See below for schema. + */ + public readonly encryptionConfigurations!: pulumi.Output; + /** + * The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + */ + public readonly imageTagMutability!: pulumi.Output; + /** + * The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` dataSource to generate/manage the JSON document used for the `lifecyclePolicy` argument. + */ + public readonly lifecyclePolicy!: pulumi.Output; + /** + * The repository name prefix to match against. + */ + public readonly prefix!: pulumi.Output; + /** + * The registry ID the repository creation template applies to. + */ + public /*out*/ readonly registryId!: pulumi.Output; + public readonly repositoryPolicy!: pulumi.Output; + /** + * A map of tags to assign to any created repositories. + */ + public readonly resourceTags!: pulumi.Output<{[key: string]: string} | undefined>; + + /** + * Create a RepositoryCreationTemplate resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: RepositoryCreationTemplateArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: RepositoryCreationTemplateArgs | RepositoryCreationTemplateState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as RepositoryCreationTemplateState | undefined; + resourceInputs["appliedFors"] = state ? state.appliedFors : undefined; + resourceInputs["customRoleArn"] = state ? state.customRoleArn : undefined; + resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["encryptionConfigurations"] = state ? state.encryptionConfigurations : undefined; + resourceInputs["imageTagMutability"] = state ? state.imageTagMutability : undefined; + resourceInputs["lifecyclePolicy"] = state ? state.lifecyclePolicy : undefined; + resourceInputs["prefix"] = state ? state.prefix : undefined; + resourceInputs["registryId"] = state ? state.registryId : undefined; + resourceInputs["repositoryPolicy"] = state ? state.repositoryPolicy : undefined; + resourceInputs["resourceTags"] = state ? state.resourceTags : undefined; + } else { + const args = argsOrState as RepositoryCreationTemplateArgs | undefined; + if ((!args || args.appliedFors === undefined) && !opts.urn) { + throw new Error("Missing required property 'appliedFors'"); + } + if ((!args || args.prefix === undefined) && !opts.urn) { + throw new Error("Missing required property 'prefix'"); + } + resourceInputs["appliedFors"] = args ? args.appliedFors : undefined; + resourceInputs["customRoleArn"] = args ? args.customRoleArn : undefined; + resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["encryptionConfigurations"] = args ? args.encryptionConfigurations : undefined; + resourceInputs["imageTagMutability"] = args ? args.imageTagMutability : undefined; + resourceInputs["lifecyclePolicy"] = args ? args.lifecyclePolicy : undefined; + resourceInputs["prefix"] = args ? args.prefix : undefined; + resourceInputs["repositoryPolicy"] = args ? args.repositoryPolicy : undefined; + resourceInputs["resourceTags"] = args ? args.resourceTags : undefined; + resourceInputs["registryId"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(RepositoryCreationTemplate.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering RepositoryCreationTemplate resources. + */ +export interface RepositoryCreationTemplateState { + /** + * Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + */ + appliedFors?: pulumi.Input[]>; + /** + * A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + */ + customRoleArn?: pulumi.Input; + /** + * The description for this template. + */ + description?: pulumi.Input; + /** + * Encryption configuration for any created repositories. See below for schema. + */ + encryptionConfigurations?: pulumi.Input[]>; + /** + * The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + */ + imageTagMutability?: pulumi.Input; + /** + * The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` dataSource to generate/manage the JSON document used for the `lifecyclePolicy` argument. + */ + lifecyclePolicy?: pulumi.Input; + /** + * The repository name prefix to match against. + */ + prefix?: pulumi.Input; + /** + * The registry ID the repository creation template applies to. + */ + registryId?: pulumi.Input; + repositoryPolicy?: pulumi.Input; + /** + * A map of tags to assign to any created repositories. + */ + resourceTags?: pulumi.Input<{[key: string]: pulumi.Input}>; +} + +/** + * The set of arguments for constructing a RepositoryCreationTemplate resource. + */ +export interface RepositoryCreationTemplateArgs { + /** + * Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + */ + appliedFors: pulumi.Input[]>; + /** + * A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + */ + customRoleArn?: pulumi.Input; + /** + * The description for this template. + */ + description?: pulumi.Input; + /** + * Encryption configuration for any created repositories. See below for schema. + */ + encryptionConfigurations?: pulumi.Input[]>; + /** + * The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + */ + imageTagMutability?: pulumi.Input; + /** + * The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `aws.ecr.getLifecyclePolicyDocument` dataSource to generate/manage the JSON document used for the `lifecyclePolicy` argument. + */ + lifecyclePolicy?: pulumi.Input; + /** + * The repository name prefix to match against. + */ + prefix: pulumi.Input; + repositoryPolicy?: pulumi.Input; + /** + * A map of tags to assign to any created repositories. + */ + resourceTags?: pulumi.Input<{[key: string]: pulumi.Input}>; +} diff --git a/sdk/nodejs/eks/cluster.ts b/sdk/nodejs/eks/cluster.ts index 87335c25a4a..fad7a14672d 100644 --- a/sdk/nodejs/eks/cluster.ts +++ b/sdk/nodejs/eks/cluster.ts @@ -308,6 +308,10 @@ export class Cluster extends pulumi.CustomResource { * @deprecated Please use `tags` instead. */ public /*out*/ readonly tagsAll!: pulumi.Output<{[key: string]: string}>; + /** + * Configuration block for the support policy to use for the cluster. See upgradePolicy for details. + */ + public readonly upgradePolicy!: pulumi.Output; /** * Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. */ @@ -352,6 +356,7 @@ export class Cluster extends pulumi.CustomResource { resourceInputs["status"] = state ? state.status : undefined; resourceInputs["tags"] = state ? state.tags : undefined; resourceInputs["tagsAll"] = state ? state.tagsAll : undefined; + resourceInputs["upgradePolicy"] = state ? state.upgradePolicy : undefined; resourceInputs["version"] = state ? state.version : undefined; resourceInputs["vpcConfig"] = state ? state.vpcConfig : undefined; } else { @@ -372,6 +377,7 @@ export class Cluster extends pulumi.CustomResource { resourceInputs["outpostConfig"] = args ? args.outpostConfig : undefined; resourceInputs["roleArn"] = args ? args.roleArn : undefined; resourceInputs["tags"] = args ? args.tags : undefined; + resourceInputs["upgradePolicy"] = args ? args.upgradePolicy : undefined; resourceInputs["version"] = args ? args.version : undefined; resourceInputs["vpcConfig"] = args ? args.vpcConfig : undefined; resourceInputs["arn"] = undefined /*out*/; @@ -470,6 +476,10 @@ export interface ClusterState { * @deprecated Please use `tags` instead. */ tagsAll?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * Configuration block for the support policy to use for the cluster. See upgradePolicy for details. + */ + upgradePolicy?: pulumi.Input; /** * Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. */ @@ -523,6 +533,10 @@ export interface ClusterArgs { * Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. */ tags?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * Configuration block for the support policy to use for the cluster. See upgradePolicy for details. + */ + upgradePolicy?: pulumi.Input; /** * Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. */ diff --git a/sdk/nodejs/eks/getCluster.ts b/sdk/nodejs/eks/getCluster.ts index 7846841356f..398a92da014 100644 --- a/sdk/nodejs/eks/getCluster.ts +++ b/sdk/nodejs/eks/getCluster.ts @@ -116,6 +116,10 @@ export interface GetClusterResult { * Key-value map of resource tags. */ readonly tags: {[key: string]: string}; + /** + * (Optional) Configuration block for the support policy to use for the cluster. + */ + readonly upgradePolicies: outputs.eks.GetClusterUpgradePolicy[]; /** * Kubernetes server version for the cluster. */ diff --git a/sdk/nodejs/elasticache/userGroupAssociation.ts b/sdk/nodejs/elasticache/userGroupAssociation.ts index 211dfcfaf41..78eabc57d03 100644 --- a/sdk/nodejs/elasticache/userGroupAssociation.ts +++ b/sdk/nodejs/elasticache/userGroupAssociation.ts @@ -5,10 +5,6 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "../utilities"; /** - * Associate an existing ElastiCache user and an existing user group. - * - * > **NOTE:** The provider will detect changes in the `aws.elasticache.UserGroup` since `aws.elasticache.UserGroupAssociation` changes the user IDs associated with the user group. You can ignore these changes with the `ignoreChanges` option as shown in the example. - * * ## Example Usage * * ```typescript diff --git a/sdk/nodejs/index.ts b/sdk/nodejs/index.ts index a60e1268821..52e57adcfb2 100644 --- a/sdk/nodejs/index.ts +++ b/sdk/nodejs/index.ts @@ -277,6 +277,7 @@ import * as ssoadmin from "./ssoadmin"; import * as storagegateway from "./storagegateway"; import * as swf from "./swf"; import * as synthetics from "./synthetics"; +import * as timestreaminfluxdb from "./timestreaminfluxdb"; import * as timestreamwrite from "./timestreamwrite"; import * as transcribe from "./transcribe"; import * as transfer from "./transfer"; @@ -491,6 +492,7 @@ export { storagegateway, swf, synthetics, + timestreaminfluxdb, timestreamwrite, transcribe, transfer, diff --git a/sdk/nodejs/pipes/pipe.ts b/sdk/nodejs/pipes/pipe.ts index 857866feaac..fea2446b75f 100644 --- a/sdk/nodejs/pipes/pipe.ts +++ b/sdk/nodejs/pipes/pipe.ts @@ -132,6 +132,33 @@ import * as utilities from "../utilities"; * }); * ``` * + * ### CloudWatch Logs Logging Configuration Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const example = new aws.cloudwatch.LogGroup("example", {name: "example-pipe-target"}); + * const examplePipe = new aws.pipes.Pipe("example", { + * name: "example-pipe", + * roleArn: exampleAwsIamRole.arn, + * source: sourceAwsSqsQueue.arn, + * target: targetAwsSqsQueue.arn, + * logConfiguration: { + * includeExecutionDatas: ["ALL"], + * level: "INFO", + * cloudwatchLogsLogDestination: { + * logGroupArn: targetAwsCloudwatchLogGroup.arn, + * }, + * }, + * }, { + * dependsOn: [ + * source, + * target, + * ], + * }); + * ``` + * * ## Import * * Using `pulumi import`, import pipes using the `name`. For example: diff --git a/sdk/nodejs/rds/cluster.ts b/sdk/nodejs/rds/cluster.ts index 1eb56bb76aa..476a7d5c7d4 100644 --- a/sdk/nodejs/rds/cluster.ts +++ b/sdk/nodejs/rds/cluster.ts @@ -445,15 +445,27 @@ export class Cluster extends pulumi.CustomResource { */ public readonly networkType!: pulumi.Output; /** - * Port on which the DB accepts connections + * Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + */ + public readonly performanceInsightsEnabled!: pulumi.Output; + /** + * Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + */ + public readonly performanceInsightsKmsKeyId!: pulumi.Output; + /** + * Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + */ + public readonly performanceInsightsRetentionPeriod!: pulumi.Output; + /** + * Port on which the DB accepts connections. */ public readonly port!: pulumi.Output; /** - * Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + * Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. */ public readonly preferredBackupWindow!: pulumi.Output; /** - * Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + * Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` */ public readonly preferredMaintenanceWindow!: pulumi.Output; /** @@ -573,6 +585,9 @@ export class Cluster extends pulumi.CustomResource { resourceInputs["masterUserSecrets"] = state ? state.masterUserSecrets : undefined; resourceInputs["masterUsername"] = state ? state.masterUsername : undefined; resourceInputs["networkType"] = state ? state.networkType : undefined; + resourceInputs["performanceInsightsEnabled"] = state ? state.performanceInsightsEnabled : undefined; + resourceInputs["performanceInsightsKmsKeyId"] = state ? state.performanceInsightsKmsKeyId : undefined; + resourceInputs["performanceInsightsRetentionPeriod"] = state ? state.performanceInsightsRetentionPeriod : undefined; resourceInputs["port"] = state ? state.port : undefined; resourceInputs["preferredBackupWindow"] = state ? state.preferredBackupWindow : undefined; resourceInputs["preferredMaintenanceWindow"] = state ? state.preferredMaintenanceWindow : undefined; @@ -635,6 +650,9 @@ export class Cluster extends pulumi.CustomResource { resourceInputs["masterUserSecretKmsKeyId"] = args ? args.masterUserSecretKmsKeyId : undefined; resourceInputs["masterUsername"] = args ? args.masterUsername : undefined; resourceInputs["networkType"] = args ? args.networkType : undefined; + resourceInputs["performanceInsightsEnabled"] = args ? args.performanceInsightsEnabled : undefined; + resourceInputs["performanceInsightsKmsKeyId"] = args ? args.performanceInsightsKmsKeyId : undefined; + resourceInputs["performanceInsightsRetentionPeriod"] = args ? args.performanceInsightsRetentionPeriod : undefined; resourceInputs["port"] = args ? args.port : undefined; resourceInputs["preferredBackupWindow"] = args ? args.preferredBackupWindow : undefined; resourceInputs["preferredMaintenanceWindow"] = args ? args.preferredMaintenanceWindow : undefined; @@ -866,15 +884,27 @@ export interface ClusterState { */ networkType?: pulumi.Input; /** - * Port on which the DB accepts connections + * Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + */ + performanceInsightsEnabled?: pulumi.Input; + /** + * Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + */ + performanceInsightsKmsKeyId?: pulumi.Input; + /** + * Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + */ + performanceInsightsRetentionPeriod?: pulumi.Input; + /** + * Port on which the DB accepts connections. */ port?: pulumi.Input; /** - * Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + * Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. */ preferredBackupWindow?: pulumi.Input; /** - * Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + * Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` */ preferredMaintenanceWindow?: pulumi.Input; /** @@ -1106,15 +1136,27 @@ export interface ClusterArgs { */ networkType?: pulumi.Input; /** - * Port on which the DB accepts connections + * Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + */ + performanceInsightsEnabled?: pulumi.Input; + /** + * Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + */ + performanceInsightsKmsKeyId?: pulumi.Input; + /** + * Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + */ + performanceInsightsRetentionPeriod?: pulumi.Input; + /** + * Port on which the DB accepts connections. */ port?: pulumi.Input; /** - * Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + * Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. */ preferredBackupWindow?: pulumi.Input; /** - * Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + * Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` */ preferredMaintenanceWindow?: pulumi.Input; /** diff --git a/sdk/nodejs/rds/instance.ts b/sdk/nodejs/rds/instance.ts index 6d658cd4be3..5642e9c7536 100644 --- a/sdk/nodejs/rds/instance.ts +++ b/sdk/nodejs/rds/instance.ts @@ -700,6 +700,10 @@ export class Instance extends pulumi.CustomResource { * for more information. */ public readonly timezone!: pulumi.Output; + /** + * Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicateSourceDb`. + */ + public readonly upgradeStorageConfig!: pulumi.Output; /** * (Required unless a `snapshotIdentifier` or `replicateSourceDb` * is provided) Username for the master DB user. Cannot be specified for a replica. @@ -802,6 +806,7 @@ export class Instance extends pulumi.CustomResource { resourceInputs["tags"] = state ? state.tags : undefined; resourceInputs["tagsAll"] = state ? state.tagsAll : undefined; resourceInputs["timezone"] = state ? state.timezone : undefined; + resourceInputs["upgradeStorageConfig"] = state ? state.upgradeStorageConfig : undefined; resourceInputs["username"] = state ? state.username : undefined; resourceInputs["vpcSecurityGroupIds"] = state ? state.vpcSecurityGroupIds : undefined; } else { @@ -875,6 +880,7 @@ export class Instance extends pulumi.CustomResource { resourceInputs["storageType"] = args ? args.storageType : undefined; resourceInputs["tags"] = args ? args.tags : undefined; resourceInputs["timezone"] = args ? args.timezone : undefined; + resourceInputs["upgradeStorageConfig"] = args ? args.upgradeStorageConfig : undefined; resourceInputs["username"] = args ? args.username : undefined; resourceInputs["vpcSecurityGroupIds"] = args ? args.vpcSecurityGroupIds : undefined; resourceInputs["address"] = undefined /*out*/; @@ -1292,6 +1298,10 @@ export interface InstanceState { * for more information. */ timezone?: pulumi.Input; + /** + * Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicateSourceDb`. + */ + upgradeStorageConfig?: pulumi.Input; /** * (Required unless a `snapshotIdentifier` or `replicateSourceDb` * is provided) Username for the master DB user. Cannot be specified for a replica. @@ -1652,6 +1662,10 @@ export interface InstanceArgs { * for more information. */ timezone?: pulumi.Input; + /** + * Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicateSourceDb`. + */ + upgradeStorageConfig?: pulumi.Input; /** * (Required unless a `snapshotIdentifier` or `replicateSourceDb` * is provided) Username for the master DB user. Cannot be specified for a replica. diff --git a/sdk/nodejs/s3/bucketNotification.ts b/sdk/nodejs/s3/bucketNotification.ts index e05d75f21a7..fa9fae1e738 100644 --- a/sdk/nodejs/s3/bucketNotification.ts +++ b/sdk/nodejs/s3/bucketNotification.ts @@ -10,7 +10,7 @@ import * as utilities from "../utilities"; /** * Manages a S3 Bucket Notification Configuration. For additional information, see the [Configuring S3 Event Notifications section in the Amazon S3 Developer Guide](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). * - * > **NOTE:** S3 Buckets only support a single notification configuration. Declaring multiple `aws.s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. See the example "Trigger multiple Lambda functions" for an option. + * > **NOTE:** S3 Buckets only support a single notification configuration resource. Declaring multiple `aws.s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. This resource will overwrite any existing event notifications configured for the S3 bucket it's associated with. See the example "Trigger multiple Lambda functions" for an option of how to configure multiple triggers within this resource. * * > This resource cannot be used with S3 directory buckets. * diff --git a/sdk/nodejs/sagemaker/getPrebuiltEcrImage.ts b/sdk/nodejs/sagemaker/getPrebuiltEcrImage.ts index 2fb04a142bf..83dd50725fa 100644 --- a/sdk/nodejs/sagemaker/getPrebuiltEcrImage.ts +++ b/sdk/nodejs/sagemaker/getPrebuiltEcrImage.ts @@ -51,7 +51,7 @@ export interface GetPrebuiltEcrImageArgs { */ region?: string; /** - * Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + * Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. */ repositoryName: string; } @@ -117,7 +117,7 @@ export interface GetPrebuiltEcrImageOutputArgs { */ region?: pulumi.Input; /** - * Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + * Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. */ repositoryName: pulumi.Input; } diff --git a/sdk/nodejs/sfn/activity.ts b/sdk/nodejs/sfn/activity.ts index 4657c786f57..fb9828ed6d1 100644 --- a/sdk/nodejs/sfn/activity.ts +++ b/sdk/nodejs/sfn/activity.ts @@ -2,6 +2,9 @@ // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "../types/input"; +import * as outputs from "../types/output"; +import * as enums from "../types/enums"; import * as utilities from "../utilities"; /** @@ -9,6 +12,8 @@ import * as utilities from "../utilities"; * * ## Example Usage * + * ### Basic + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; @@ -16,6 +21,24 @@ import * as utilities from "../utilities"; * const sfnActivity = new aws.sfn.Activity("sfn_activity", {name: "my-activity"}); * ``` * + * ### Encryption + * + * > *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. + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const sfnActivity = new aws.sfn.Activity("sfn_activity", { + * name: "my-activity", + * encryptionConfiguration: { + * kmsKeyId: kmsKeyForSfn.arn, + * type: "CUSTOMER_MANAGED_KMS_KEY", + * kmsDataKeyReusePeriodSeconds: 900, + * }, + * }); + * ``` + * * ## Import * * Using `pulumi import`, import activities using the `arn`. For example: @@ -56,6 +79,10 @@ export class Activity extends pulumi.CustomResource { * The date the activity was created. */ public /*out*/ readonly creationDate!: pulumi.Output; + /** + * Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + */ + public readonly encryptionConfiguration!: pulumi.Output; /** * The name of the activity to create. */ @@ -85,11 +112,13 @@ export class Activity extends pulumi.CustomResource { if (opts.id) { const state = argsOrState as ActivityState | undefined; resourceInputs["creationDate"] = state ? state.creationDate : undefined; + resourceInputs["encryptionConfiguration"] = state ? state.encryptionConfiguration : undefined; resourceInputs["name"] = state ? state.name : undefined; resourceInputs["tags"] = state ? state.tags : undefined; resourceInputs["tagsAll"] = state ? state.tagsAll : undefined; } else { const args = argsOrState as ActivityArgs | undefined; + resourceInputs["encryptionConfiguration"] = args ? args.encryptionConfiguration : undefined; resourceInputs["name"] = args ? args.name : undefined; resourceInputs["tags"] = args ? args.tags : undefined; resourceInputs["creationDate"] = undefined /*out*/; @@ -108,6 +137,10 @@ export interface ActivityState { * The date the activity was created. */ creationDate?: pulumi.Input; + /** + * Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + */ + encryptionConfiguration?: pulumi.Input; /** * The name of the activity to create. */ @@ -128,6 +161,10 @@ export interface ActivityState { * The set of arguments for constructing a Activity resource. */ export interface ActivityArgs { + /** + * Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + */ + encryptionConfiguration?: pulumi.Input; /** * The name of the activity to create. */ diff --git a/sdk/nodejs/sfn/stateMachine.ts b/sdk/nodejs/sfn/stateMachine.ts index 9fd1466b1f8..a21d0e2bff5 100644 --- a/sdk/nodejs/sfn/stateMachine.ts +++ b/sdk/nodejs/sfn/stateMachine.ts @@ -122,6 +122,38 @@ import * as utilities from "../utilities"; * }); * ``` * + * ### Encryption + * + * > *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. + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * // ... + * const sfnStateMachine = new aws.sfn.StateMachine("sfn_state_machine", { + * 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 + * } + * } + * } + * `, + * encryptionConfiguration: { + * kmsKeyId: kmsKeyForSfn.arn, + * type: "CUSTOMER_MANAGED_KMS_KEY", + * kmsDataKeyReusePeriodSeconds: 900, + * }, + * }); + * ``` + * * ## Import * * Using `pulumi import`, import State Machines using the `arn`. For example: @@ -171,6 +203,10 @@ export class StateMachine extends pulumi.CustomResource { */ public readonly definition!: pulumi.Output; public /*out*/ readonly description!: pulumi.Output; + /** + * Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + */ + public readonly encryptionConfiguration!: pulumi.Output; /** * Defines what execution history events are logged and where they are logged. The `loggingConfiguration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. */ @@ -237,6 +273,7 @@ export class StateMachine extends pulumi.CustomResource { resourceInputs["creationDate"] = state ? state.creationDate : undefined; resourceInputs["definition"] = state ? state.definition : undefined; resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["encryptionConfiguration"] = state ? state.encryptionConfiguration : undefined; resourceInputs["loggingConfiguration"] = state ? state.loggingConfiguration : undefined; resourceInputs["name"] = state ? state.name : undefined; resourceInputs["namePrefix"] = state ? state.namePrefix : undefined; @@ -259,6 +296,7 @@ export class StateMachine extends pulumi.CustomResource { throw new Error("Missing required property 'roleArn'"); } resourceInputs["definition"] = args ? args.definition : undefined; + resourceInputs["encryptionConfiguration"] = args ? args.encryptionConfiguration : undefined; resourceInputs["loggingConfiguration"] = args ? args.loggingConfiguration : undefined; resourceInputs["name"] = args ? args.name : undefined; resourceInputs["namePrefix"] = args ? args.namePrefix : undefined; @@ -298,6 +336,10 @@ export interface StateMachineState { */ definition?: pulumi.Input; description?: pulumi.Input; + /** + * Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + */ + encryptionConfiguration?: pulumi.Input; /** * Defines what execution history events are logged and where they are logged. The `loggingConfiguration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. */ @@ -356,6 +398,10 @@ export interface StateMachineArgs { * The [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html) definition of the state machine. */ definition: pulumi.Input; + /** + * Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + */ + encryptionConfiguration?: pulumi.Input; /** * Defines what execution history events are logged and where they are logged. The `loggingConfiguration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. */ diff --git a/sdk/nodejs/timestreaminfluxdb/dbInstance.ts b/sdk/nodejs/timestreaminfluxdb/dbInstance.ts new file mode 100644 index 00000000000..7f4df8de8ff --- /dev/null +++ b/sdk/nodejs/timestreaminfluxdb/dbInstance.ts @@ -0,0 +1,520 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "../types/input"; +import * as outputs from "../types/output"; +import * as enums from "../types/enums"; +import * as utilities from "../utilities"; + +/** + * Resource for managing an Amazon Timestream for InfluxDB Db Instance. + * + * ## Example Usage + * + * ### Basic Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const example = new aws.timestreaminfluxdb.DbInstance("example", { + * allocatedStorage: 20, + * bucket: "example-bucket-name", + * dbInstanceType: "db.influx.medium", + * username: "admin", + * password: "example-password", + * organization: "organization", + * vpcSubnetIds: [exampleid], + * vpcSecurityGroupIds: [exampleAwsSecurityGroup.id], + * name: "example-db-instance", + * }); + * ``` + * + * ### Usage with Prerequisite Resources + * + * All Timestream for InfluxDB instances require a VPC, subnet, and security group. The following example shows how these prerequisite resources can be created and used with `aws.timestreaminfluxdb.DbInstance`. + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const example = new aws.ec2.Vpc("example", {cidrBlock: "10.0.0.0/16"}); + * const exampleSubnet = new aws.ec2.Subnet("example", { + * vpcId: example.id, + * cidrBlock: "10.0.1.0/24", + * }); + * const exampleSecurityGroup = new aws.ec2.SecurityGroup("example", { + * name: "example", + * vpcId: example.id, + * }); + * const exampleDbInstance = new aws.timestreaminfluxdb.DbInstance("example", { + * allocatedStorage: 20, + * bucket: "example-bucket-name", + * dbInstanceType: "db.influx.medium", + * username: "admin", + * password: "example-password", + * organization: "organization", + * vpcSubnetIds: [exampleSubnet.id], + * vpcSecurityGroupIds: [exampleSecurityGroup.id], + * name: "example-db-instance", + * }); + * ``` + * + * ### Usage with S3 Log Delivery Enabled + * + * You can use an S3 bucket to store logs generated by your Timestream for InfluxDB instance. The following example shows what resources and arguments are required to configure an S3 bucket for logging, including the IAM policy that needs to be set in order to allow Timestream for InfluxDB to place logs in your S3 bucket. The configuration of the required VPC, security group, and subnet have been left out of the example for brevity. + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const exampleBucketV2 = new aws.s3.BucketV2("example", {bucket: "example-s3-bucket"}); + * const example = aws.iam.getPolicyDocumentOutput({ + * statements: [{ + * actions: ["s3:PutObject"], + * principals: [{ + * type: "Service", + * identifiers: ["timestream-influxdb.amazonaws.com"], + * }], + * resources: [pulumi.interpolate`${exampleBucketV2.arn}/*`], + * }], + * }); + * const exampleBucketPolicy = new aws.s3.BucketPolicy("example", { + * bucket: exampleBucketV2.id, + * policy: example.apply(example => example.json), + * }); + * const exampleDbInstance = new aws.timestreaminfluxdb.DbInstance("example", { + * allocatedStorage: 20, + * bucket: "example-bucket-name", + * dbInstanceType: "db.influx.medium", + * username: "admin", + * password: "example-password", + * organization: "organization", + * vpcSubnetIds: [exampleAwsSubnet.id], + * vpcSecurityGroupIds: [exampleAwsSecurityGroup.id], + * name: "example-db-instance", + * logDeliveryConfiguration: { + * s3Configuration: { + * bucketName: exampleBucketV2.name, + * enabled: true, + * }, + * }, + * }); + * ``` + * + * ### Usage with MultiAZ Deployment + * + * To use multi-region availability, at least two subnets must be created in different availability zones and used with your Timestream for InfluxDB instance. + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const example1 = new aws.ec2.Subnet("example_1", { + * vpcId: exampleAwsVpc.id, + * cidrBlock: "10.0.1.0/24", + * availabilityZone: "us-west-2a", + * }); + * const example2 = new aws.ec2.Subnet("example_2", { + * vpcId: exampleAwsVpc.id, + * cidrBlock: "10.0.2.0/24", + * availabilityZone: "us-west-2b", + * }); + * const example = new aws.timestreaminfluxdb.DbInstance("example", { + * allocatedStorage: 20, + * bucket: "example-bucket-name", + * dbInstanceType: "db.influx.medium", + * deploymentType: "WITH_MULTIAZ_STANDBY", + * username: "admin", + * password: "example-password", + * organization: "organization", + * vpcSubnetIds: [ + * example1.id, + * example2.id, + * ], + * vpcSecurityGroupIds: [exampleAwsSecurityGroup.id], + * name: "example-db-instance", + * }); + * ``` + * + * ## Import + * + * Using `pulumi import`, import Timestream for InfluxDB Db Instance using its identifier. For example: + * + * ```sh + * $ pulumi import aws:timestreaminfluxdb/dbInstance:DbInstance example 12345abcde + * ``` + */ +export class DbInstance extends pulumi.CustomResource { + /** + * Get an existing DbInstance resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: DbInstanceState, opts?: pulumi.CustomResourceOptions): DbInstance { + return new DbInstance(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'aws:timestreaminfluxdb/dbInstance:DbInstance'; + + /** + * Returns true if the given object is an instance of DbInstance. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is DbInstance { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === DbInstance.__pulumiType; + } + + /** + * Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + */ + public readonly allocatedStorage!: pulumi.Output; + /** + * ARN of the Timestream for InfluxDB Instance. + */ + public /*out*/ readonly arn!: pulumi.Output; + /** + * Availability Zone in which the DB instance resides. + */ + public /*out*/ readonly availabilityZone!: pulumi.Output; + /** + * Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + */ + public readonly bucket!: pulumi.Output; + /** + * Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + */ + public readonly dbInstanceType!: pulumi.Output; + /** + * ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `dbParameterGroupIdentifier`, removing `dbParameterGroupIdentifier` will cause the instance to be destroyed and recreated. + */ + public readonly dbParameterGroupIdentifier!: pulumi.Output; + /** + * Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use `"InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocatedStorage` is 400. + */ + public readonly dbStorageType!: pulumi.Output; + /** + * Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + */ + public readonly deploymentType!: pulumi.Output; + /** + * Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + */ + public /*out*/ readonly endpoint!: pulumi.Output; + /** + * ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `aws.timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + */ + public /*out*/ readonly influxAuthParametersSecretArn!: pulumi.Output; + /** + * Configuration for sending InfluxDB engine logs to a specified S3 bucket. + */ + public readonly logDeliveryConfiguration!: pulumi.Output; + /** + * Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + */ + public readonly name!: pulumi.Output; + /** + * Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + */ + public readonly organization!: pulumi.Output; + /** + * Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + */ + public readonly password!: pulumi.Output; + /** + * Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + */ + public readonly publiclyAccessible!: pulumi.Output; + /** + * Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + */ + public /*out*/ readonly secondaryAvailabilityZone!: pulumi.Output; + /** + * Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + */ + public readonly tags!: pulumi.Output<{[key: string]: string} | undefined>; + /** + * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + * + * @deprecated Please use `tags` instead. + */ + public /*out*/ readonly tagsAll!: pulumi.Output<{[key: string]: string}>; + public readonly timeouts!: pulumi.Output; + /** + * Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + */ + public readonly username!: pulumi.Output; + /** + * List of VPC security group IDs to associate with the DB instance. + */ + public readonly vpcSecurityGroupIds!: pulumi.Output; + /** + * List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + */ + public readonly vpcSubnetIds!: pulumi.Output; + + /** + * Create a DbInstance resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: DbInstanceArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: DbInstanceArgs | DbInstanceState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as DbInstanceState | undefined; + resourceInputs["allocatedStorage"] = state ? state.allocatedStorage : undefined; + resourceInputs["arn"] = state ? state.arn : undefined; + resourceInputs["availabilityZone"] = state ? state.availabilityZone : undefined; + resourceInputs["bucket"] = state ? state.bucket : undefined; + resourceInputs["dbInstanceType"] = state ? state.dbInstanceType : undefined; + resourceInputs["dbParameterGroupIdentifier"] = state ? state.dbParameterGroupIdentifier : undefined; + resourceInputs["dbStorageType"] = state ? state.dbStorageType : undefined; + resourceInputs["deploymentType"] = state ? state.deploymentType : undefined; + resourceInputs["endpoint"] = state ? state.endpoint : undefined; + resourceInputs["influxAuthParametersSecretArn"] = state ? state.influxAuthParametersSecretArn : undefined; + resourceInputs["logDeliveryConfiguration"] = state ? state.logDeliveryConfiguration : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["organization"] = state ? state.organization : undefined; + resourceInputs["password"] = state ? state.password : undefined; + resourceInputs["publiclyAccessible"] = state ? state.publiclyAccessible : undefined; + resourceInputs["secondaryAvailabilityZone"] = state ? state.secondaryAvailabilityZone : undefined; + resourceInputs["tags"] = state ? state.tags : undefined; + resourceInputs["tagsAll"] = state ? state.tagsAll : undefined; + resourceInputs["timeouts"] = state ? state.timeouts : undefined; + resourceInputs["username"] = state ? state.username : undefined; + resourceInputs["vpcSecurityGroupIds"] = state ? state.vpcSecurityGroupIds : undefined; + resourceInputs["vpcSubnetIds"] = state ? state.vpcSubnetIds : undefined; + } else { + const args = argsOrState as DbInstanceArgs | undefined; + if ((!args || args.allocatedStorage === undefined) && !opts.urn) { + throw new Error("Missing required property 'allocatedStorage'"); + } + if ((!args || args.bucket === undefined) && !opts.urn) { + throw new Error("Missing required property 'bucket'"); + } + if ((!args || args.dbInstanceType === undefined) && !opts.urn) { + throw new Error("Missing required property 'dbInstanceType'"); + } + if ((!args || args.organization === undefined) && !opts.urn) { + throw new Error("Missing required property 'organization'"); + } + if ((!args || args.password === undefined) && !opts.urn) { + throw new Error("Missing required property 'password'"); + } + if ((!args || args.username === undefined) && !opts.urn) { + throw new Error("Missing required property 'username'"); + } + if ((!args || args.vpcSecurityGroupIds === undefined) && !opts.urn) { + throw new Error("Missing required property 'vpcSecurityGroupIds'"); + } + if ((!args || args.vpcSubnetIds === undefined) && !opts.urn) { + throw new Error("Missing required property 'vpcSubnetIds'"); + } + resourceInputs["allocatedStorage"] = args ? args.allocatedStorage : undefined; + resourceInputs["bucket"] = args ? args.bucket : undefined; + resourceInputs["dbInstanceType"] = args ? args.dbInstanceType : undefined; + resourceInputs["dbParameterGroupIdentifier"] = args ? args.dbParameterGroupIdentifier : undefined; + resourceInputs["dbStorageType"] = args ? args.dbStorageType : undefined; + resourceInputs["deploymentType"] = args ? args.deploymentType : undefined; + resourceInputs["logDeliveryConfiguration"] = args ? args.logDeliveryConfiguration : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["organization"] = args ? args.organization : undefined; + resourceInputs["password"] = args?.password ? pulumi.secret(args.password) : undefined; + resourceInputs["publiclyAccessible"] = args ? args.publiclyAccessible : undefined; + resourceInputs["tags"] = args ? args.tags : undefined; + resourceInputs["timeouts"] = args ? args.timeouts : undefined; + resourceInputs["username"] = args ? args.username : undefined; + resourceInputs["vpcSecurityGroupIds"] = args ? args.vpcSecurityGroupIds : undefined; + resourceInputs["vpcSubnetIds"] = args ? args.vpcSubnetIds : undefined; + resourceInputs["arn"] = undefined /*out*/; + resourceInputs["availabilityZone"] = undefined /*out*/; + resourceInputs["endpoint"] = undefined /*out*/; + resourceInputs["influxAuthParametersSecretArn"] = undefined /*out*/; + resourceInputs["secondaryAvailabilityZone"] = undefined /*out*/; + resourceInputs["tagsAll"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["password"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(DbInstance.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering DbInstance resources. + */ +export interface DbInstanceState { + /** + * Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + */ + allocatedStorage?: pulumi.Input; + /** + * ARN of the Timestream for InfluxDB Instance. + */ + arn?: pulumi.Input; + /** + * Availability Zone in which the DB instance resides. + */ + availabilityZone?: pulumi.Input; + /** + * Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + */ + bucket?: pulumi.Input; + /** + * Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + */ + dbInstanceType?: pulumi.Input; + /** + * ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `dbParameterGroupIdentifier`, removing `dbParameterGroupIdentifier` will cause the instance to be destroyed and recreated. + */ + dbParameterGroupIdentifier?: pulumi.Input; + /** + * Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use `"InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocatedStorage` is 400. + */ + dbStorageType?: pulumi.Input; + /** + * Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + */ + deploymentType?: pulumi.Input; + /** + * Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + */ + endpoint?: pulumi.Input; + /** + * ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `aws.timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + */ + influxAuthParametersSecretArn?: pulumi.Input; + /** + * Configuration for sending InfluxDB engine logs to a specified S3 bucket. + */ + logDeliveryConfiguration?: pulumi.Input; + /** + * Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + */ + name?: pulumi.Input; + /** + * Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + */ + organization?: pulumi.Input; + /** + * Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + */ + password?: pulumi.Input; + /** + * Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + */ + publiclyAccessible?: pulumi.Input; + /** + * Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + */ + secondaryAvailabilityZone?: pulumi.Input; + /** + * Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + */ + tags?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + * + * @deprecated Please use `tags` instead. + */ + tagsAll?: pulumi.Input<{[key: string]: pulumi.Input}>; + timeouts?: pulumi.Input; + /** + * Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + */ + username?: pulumi.Input; + /** + * List of VPC security group IDs to associate with the DB instance. + */ + vpcSecurityGroupIds?: pulumi.Input[]>; + /** + * List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + */ + vpcSubnetIds?: pulumi.Input[]>; +} + +/** + * The set of arguments for constructing a DbInstance resource. + */ +export interface DbInstanceArgs { + /** + * Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + */ + allocatedStorage: pulumi.Input; + /** + * Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + */ + bucket: pulumi.Input; + /** + * Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + */ + dbInstanceType: pulumi.Input; + /** + * ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `dbParameterGroupIdentifier`, removing `dbParameterGroupIdentifier` will cause the instance to be destroyed and recreated. + */ + dbParameterGroupIdentifier?: pulumi.Input; + /** + * Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use `"InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocatedStorage` is 400. + */ + dbStorageType?: pulumi.Input; + /** + * Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + */ + deploymentType?: pulumi.Input; + /** + * Configuration for sending InfluxDB engine logs to a specified S3 bucket. + */ + logDeliveryConfiguration?: pulumi.Input; + /** + * Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + */ + name?: pulumi.Input; + /** + * Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + */ + organization: pulumi.Input; + /** + * Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + */ + password: pulumi.Input; + /** + * Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + */ + publiclyAccessible?: pulumi.Input; + /** + * Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + */ + tags?: pulumi.Input<{[key: string]: pulumi.Input}>; + timeouts?: pulumi.Input; + /** + * Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influxAuthParametersSecretArn` attribute. + */ + username: pulumi.Input; + /** + * List of VPC security group IDs to associate with the DB instance. + */ + vpcSecurityGroupIds: pulumi.Input[]>; + /** + * List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + * + * The following arguments are optional: + */ + vpcSubnetIds: pulumi.Input[]>; +} diff --git a/sdk/nodejs/timestreaminfluxdb/index.ts b/sdk/nodejs/timestreaminfluxdb/index.ts new file mode 100644 index 00000000000..6be4f3d1129 --- /dev/null +++ b/sdk/nodejs/timestreaminfluxdb/index.ts @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "../utilities"; + +// Export members: +export { DbInstanceArgs, DbInstanceState } from "./dbInstance"; +export type DbInstance = import("./dbInstance").DbInstance; +export const DbInstance: typeof import("./dbInstance").DbInstance = null as any; +utilities.lazyLoad(exports, ["DbInstance"], () => require("./dbInstance")); + + +const _module = { + version: utilities.getVersion(), + construct: (name: string, type: string, urn: string): pulumi.Resource => { + switch (type) { + case "aws:timestreaminfluxdb/dbInstance:DbInstance": + return new DbInstance(name, undefined, { urn }) + default: + throw new Error(`unknown resource type ${type}`); + } + }, +}; +pulumi.runtime.registerResourceModule("aws", "timestreaminfluxdb/dbInstance", _module) diff --git a/sdk/nodejs/tsconfig.json b/sdk/nodejs/tsconfig.json index 91a0f590038..40e9acc7010 100644 --- a/sdk/nodejs/tsconfig.json +++ b/sdk/nodejs/tsconfig.json @@ -285,6 +285,8 @@ "cfg/rule.ts", "chatbot/getSlackWorkspace.ts", "chatbot/index.ts", + "chatbot/slackChannelConfiguration.ts", + "chatbot/teamsChannelConfiguration.ts", "chime/index.ts", "chime/sdkvoiceGlobalSettings.ts", "chime/sdkvoiceSipMediaApplication.ts", @@ -536,6 +538,7 @@ "datazone/domain.ts", "datazone/environmentBlueprintConfiguration.ts", "datazone/getEnvironmentBlueprint.ts", + "datazone/glossary.ts", "datazone/index.ts", "datazone/project.ts", "dax/cluster.ts", @@ -868,6 +871,7 @@ "ecr/getPullThroughCacheRule.ts", "ecr/getRepositories.ts", "ecr/getRepository.ts", + "ecr/getRepositoryCreationTemplate.ts", "ecr/index.ts", "ecr/lifecyclePolicy.ts", "ecr/lifecyclePolicyDocument.ts", @@ -876,6 +880,7 @@ "ecr/registryScanningConfiguration.ts", "ecr/replicationConfiguration.ts", "ecr/repository.ts", + "ecr/repositoryCreationTemplate.ts", "ecr/repositoryPolicy.ts", "ecrpublic/getAuthorizationToken.ts", "ecrpublic/index.ts", @@ -2111,6 +2116,8 @@ "synthetics/groupAssociation.ts", "synthetics/index.ts", "tags.ts", + "timestreaminfluxdb/dbInstance.ts", + "timestreaminfluxdb/index.ts", "timestreamwrite/database.ts", "timestreamwrite/getDatabase.ts", "timestreamwrite/getTable.ts", diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index edf56896498..951ddfab7ab 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -1040,6 +1040,10 @@ export interface ProviderEndpoint { * Use this to override the default service endpoint URL */ rekognition?: pulumi.Input; + /** + * Use this to override the default service endpoint URL + */ + resiliencehub?: pulumi.Input; /** * Use this to override the default service endpoint URL */ @@ -7629,6 +7633,21 @@ export namespace appsync { userPoolId: pulumi.Input; } + export interface GraphQLApiEnhancedMetricsConfig { + /** + * How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + */ + dataSourceLevelMetricsBehavior: pulumi.Input; + /** + * How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + */ + operationLevelMetricsConfig: pulumi.Input; + /** + * How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + */ + resolverLevelMetricsBehavior: pulumi.Input; + } + export interface GraphQLApiLambdaAuthorizerConfig { /** * Number of seconds a response should be cached for. The default is 5 minutes (300 seconds). The Lambda function can override this by returning a `ttlOverride` key in its response. A value of 0 disables caching of responses. Minimum value of 0. Maximum value of 3600. @@ -10958,6 +10977,38 @@ export namespace cfg { } } +export namespace chatbot { + export interface SlackChannelConfigurationTimeouts { + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + */ + create?: pulumi.Input; + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + */ + delete?: pulumi.Input; + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + */ + update?: pulumi.Input; + } + + export interface TeamsChannelConfigurationTimeouts { + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + */ + create?: pulumi.Input; + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + */ + delete?: pulumi.Input; + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + */ + update?: pulumi.Input; + } +} + export namespace chime { export interface SdkvoiceGlobalSettingsVoiceConnector { /** @@ -12502,7 +12553,7 @@ export namespace cloudsearch { */ highlight?: pulumi.Input; /** - * A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + * A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. */ name: pulumi.Input; /** @@ -22086,7 +22137,7 @@ export namespace ec2 { export interface InstanceInstanceMarketOptions { /** - * Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spotOptions` is specified. + * Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spotOptions` is specified. */ marketType?: pulumi.Input; /** @@ -25524,6 +25575,17 @@ export namespace ecr { filterType: pulumi.Input; } + export interface RepositoryCreationTemplateEncryptionConfiguration { + /** + * The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + */ + encryptionType?: pulumi.Input; + /** + * The ARN of the KMS key to use when `encryptionType` is `KMS`. If not specified, uses the default AWS managed key for ECR. + */ + kmsKey?: pulumi.Input; + } + export interface RepositoryEncryptionConfiguration { /** * The encryption type to use for the repository. Valid values are `AES256` or `KMS`. Defaults to `AES256`. @@ -26771,6 +26833,13 @@ export namespace eks { groupName: pulumi.Input; } + export interface ClusterUpgradePolicy { + /** + * Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + */ + supportType?: pulumi.Input; + } + export interface ClusterVpcConfig { /** * Cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control-plane-to-data-plane communication. @@ -58901,6 +58970,10 @@ export namespace pipes { * Amazon Kinesis Data Firehose logging configuration settings for the pipe. Detailed below. */ firehoseLogDestination?: pulumi.Input; + /** + * String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + */ + includeExecutionDatas?: pulumi.Input[]>; /** * The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. */ @@ -61495,7 +61568,11 @@ export namespace rds { /** * Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. */ - sourceClusterIdentifier: pulumi.Input; + sourceClusterIdentifier?: pulumi.Input; + /** + * Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + */ + sourceClusterResourceId?: pulumi.Input; /** * Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restoreToTime`. */ @@ -71435,6 +71512,21 @@ export namespace sesv2 { } export namespace sfn { + export interface ActivityEncryptionConfiguration { + /** + * Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + */ + kmsDataKeyReusePeriodSeconds?: pulumi.Input; + /** + * The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + */ + kmsKeyId?: pulumi.Input; + /** + * The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + */ + type?: pulumi.Input; + } + export interface AliasRoutingConfiguration { /** * The Amazon Resource Name (ARN) of the state machine version. @@ -71446,6 +71538,21 @@ export namespace sfn { weight: pulumi.Input; } + export interface StateMachineEncryptionConfiguration { + /** + * Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + */ + kmsDataKeyReusePeriodSeconds?: pulumi.Input; + /** + * The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + */ + kmsKeyId?: pulumi.Input; + /** + * The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + */ + type?: pulumi.Input; + } + export interface StateMachineLoggingConfiguration { /** * Determines whether execution data is included in your log. When set to `false`, data is excluded. @@ -72691,6 +72798,43 @@ export namespace synthetics { } } +export namespace timestreaminfluxdb { + export interface DbInstanceLogDeliveryConfiguration { + /** + * Configuration for S3 bucket log delivery. + */ + s3Configuration?: pulumi.Input; + } + + export interface DbInstanceLogDeliveryConfigurationS3Configuration { + /** + * Name of the S3 bucket to deliver logs to. + */ + bucketName: pulumi.Input; + /** + * Indicates whether log delivery to the S3 bucket is enabled. + * + * **Note**: Only three arguments do updates in-place: `dbParameterGroupIdentifier`, `logDeliveryConfiguration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `dbParameterGroupIdentifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `dbParameterGroupIdentifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + */ + enabled: pulumi.Input; + } + + export interface DbInstanceTimeouts { + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + */ + create?: pulumi.Input; + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + */ + delete?: pulumi.Input; + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + */ + update?: pulumi.Input; + } +} + export namespace timestreamwrite { export interface TableMagneticStoreWriteProperties { /** diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index b27a7204c82..4443883e448 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -7780,6 +7780,21 @@ export namespace appsync { userPoolId: string; } + export interface GraphQLApiEnhancedMetricsConfig { + /** + * How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + */ + dataSourceLevelMetricsBehavior: string; + /** + * How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + */ + operationLevelMetricsConfig: string; + /** + * How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + */ + resolverLevelMetricsBehavior: string; + } + export interface GraphQLApiLambdaAuthorizerConfig { /** * Number of seconds a response should be cached for. The default is 5 minutes (300 seconds). The Lambda function can override this by returning a `ttlOverride` key in its response. A value of 0 disables caching of responses. Minimum value of 0. Maximum value of 3600. @@ -12400,6 +12415,39 @@ export namespace cfg { } +export namespace chatbot { + export interface SlackChannelConfigurationTimeouts { + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + */ + create?: string; + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + */ + delete?: string; + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + */ + update?: string; + } + + export interface TeamsChannelConfigurationTimeouts { + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + */ + create?: string; + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + */ + delete?: string; + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + */ + update?: string; + } + +} + export namespace chime { export interface SdkvoiceGlobalSettingsVoiceConnector { /** @@ -14301,7 +14349,7 @@ export namespace cloudsearch { */ highlight?: boolean; /** - * A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + * A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. */ name: string; /** @@ -18558,6 +18606,10 @@ export namespace config { * Use this to override the default service endpoint URL */ rekognition?: string; + /** + * Use this to override the default service endpoint URL + */ + resiliencehub?: string; /** * Use this to override the default service endpoint URL */ @@ -27763,7 +27815,7 @@ export namespace ec2 { export interface InstanceInstanceMarketOptions { /** - * Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spotOptions` is specified. + * Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spotOptions` is specified. */ marketType: string; /** @@ -30981,6 +31033,17 @@ export namespace ecr { tagStatus: string; } + export interface GetRepositoryCreationTemplateEncryptionConfiguration { + /** + * Encryption type to use for any created repositories, either `AES256` or `KMS`. + */ + encryptionType: string; + /** + * If `encryptionType` is `KMS`, the ARN of the KMS key used. + */ + kmsKey: string; + } + export interface GetRepositoryEncryptionConfiguration { /** * Encryption type to use for the repository, either `AES256` or `KMS`. @@ -31055,6 +31118,17 @@ export namespace ecr { filterType: string; } + export interface RepositoryCreationTemplateEncryptionConfiguration { + /** + * The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + */ + encryptionType?: string; + /** + * The ARN of the KMS key to use when `encryptionType` is `KMS`. If not specified, uses the default AWS managed key for ECR. + */ + kmsKey: string; + } + export interface RepositoryEncryptionConfiguration { /** * The encryption type to use for the repository. Valid values are `AES256` or `KMS`. Defaults to `AES256`. @@ -32219,6 +32293,13 @@ export namespace eks { groupName: string; } + export interface ClusterUpgradePolicy { + /** + * Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + */ + supportType: string; + } + export interface ClusterVpcConfig { /** * Cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control-plane-to-data-plane communication. @@ -32332,6 +32413,13 @@ export namespace eks { groupName: string; } + export interface GetClusterUpgradePolicy { + /** + * (Optional) Support type to use for the cluster. + */ + supportType: string; + } + export interface GetClusterVpcConfig { /** * The cluster security group that was created by Amazon EKS for the cluster. @@ -66713,6 +66801,10 @@ export namespace pipes { * Amazon Kinesis Data Firehose logging configuration settings for the pipe. Detailed below. */ firehoseLogDestination?: outputs.pipes.PipeLogConfigurationFirehoseLogDestination; + /** + * String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + */ + includeExecutionDatas?: string[]; /** * The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. */ @@ -69617,7 +69709,11 @@ export namespace rds { /** * Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. */ - sourceClusterIdentifier: string; + sourceClusterIdentifier?: string; + /** + * Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + */ + sourceClusterResourceId?: string; /** * Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restoreToTime`. */ @@ -79826,6 +79922,21 @@ export namespace sesv2 { } export namespace sfn { + export interface ActivityEncryptionConfiguration { + /** + * Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + */ + kmsDataKeyReusePeriodSeconds?: number; + /** + * The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + */ + kmsKeyId?: string; + /** + * The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + */ + type?: string; + } + export interface AliasRoutingConfiguration { /** * The Amazon Resource Name (ARN) of the state machine version. @@ -79842,6 +79953,21 @@ export namespace sfn { weight: number; } + export interface StateMachineEncryptionConfiguration { + /** + * Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + */ + kmsDataKeyReusePeriodSeconds?: number; + /** + * The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + */ + kmsKeyId?: string; + /** + * The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + */ + type?: string; + } + export interface StateMachineLoggingConfiguration { /** * Determines whether execution data is included in your log. When set to `false`, data is excluded. @@ -81302,6 +81428,44 @@ export namespace synthetics { } +export namespace timestreaminfluxdb { + export interface DbInstanceLogDeliveryConfiguration { + /** + * Configuration for S3 bucket log delivery. + */ + s3Configuration?: outputs.timestreaminfluxdb.DbInstanceLogDeliveryConfigurationS3Configuration; + } + + export interface DbInstanceLogDeliveryConfigurationS3Configuration { + /** + * Name of the S3 bucket to deliver logs to. + */ + bucketName: string; + /** + * Indicates whether log delivery to the S3 bucket is enabled. + * + * **Note**: Only three arguments do updates in-place: `dbParameterGroupIdentifier`, `logDeliveryConfiguration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `dbParameterGroupIdentifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `dbParameterGroupIdentifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + */ + enabled: boolean; + } + + export interface DbInstanceTimeouts { + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + */ + create?: string; + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + */ + delete?: string; + /** + * A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + */ + update?: string; + } + +} + export namespace timestreamwrite { export interface GetTableMagneticStoreWriteProperty { /** diff --git a/sdk/nodejs/wafv2/webAcl.ts b/sdk/nodejs/wafv2/webAcl.ts index 239c88502e4..576a560e72c 100644 --- a/sdk/nodejs/wafv2/webAcl.ts +++ b/sdk/nodejs/wafv2/webAcl.ts @@ -76,6 +76,10 @@ export class WebAcl extends pulumi.CustomResource { * Friendly name of the WebACL. */ public readonly name!: pulumi.Output; + /** + * Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + */ + public readonly ruleJson!: pulumi.Output; /** * Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. */ @@ -127,6 +131,7 @@ export class WebAcl extends pulumi.CustomResource { resourceInputs["description"] = state ? state.description : undefined; resourceInputs["lockToken"] = state ? state.lockToken : undefined; resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["ruleJson"] = state ? state.ruleJson : undefined; resourceInputs["rules"] = state ? state.rules : undefined; resourceInputs["scope"] = state ? state.scope : undefined; resourceInputs["tags"] = state ? state.tags : undefined; @@ -151,6 +156,7 @@ export class WebAcl extends pulumi.CustomResource { resourceInputs["defaultAction"] = args ? args.defaultAction : undefined; resourceInputs["description"] = args ? args.description : undefined; resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["ruleJson"] = args ? args.ruleJson : undefined; resourceInputs["rules"] = args ? args.rules : undefined; resourceInputs["scope"] = args ? args.scope : undefined; resourceInputs["tags"] = args ? args.tags : undefined; @@ -212,6 +218,10 @@ export interface WebAclState { * Friendly name of the WebACL. */ name?: pulumi.Input; + /** + * Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + */ + ruleJson?: pulumi.Input; /** * Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. */ @@ -272,6 +282,10 @@ export interface WebAclArgs { * Friendly name of the WebACL. */ name?: pulumi.Input; + /** + * Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + */ + ruleJson?: pulumi.Input; /** * Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. */ diff --git a/sdk/python/pulumi_aws/__init__.py b/sdk/python/pulumi_aws/__init__.py index 9a60477b4fe..daaa7e3ae22 100644 --- a/sdk/python/pulumi_aws/__init__.py +++ b/sdk/python/pulumi_aws/__init__.py @@ -420,6 +420,8 @@ swf = __swf import pulumi_aws.synthetics as __synthetics synthetics = __synthetics + import pulumi_aws.timestreaminfluxdb as __timestreaminfluxdb + timestreaminfluxdb = __timestreaminfluxdb import pulumi_aws.timestreamwrite as __timestreamwrite timestreamwrite = __timestreamwrite import pulumi_aws.transcribe as __transcribe @@ -645,6 +647,7 @@ storagegateway = _utilities.lazy_import('pulumi_aws.storagegateway') swf = _utilities.lazy_import('pulumi_aws.swf') synthetics = _utilities.lazy_import('pulumi_aws.synthetics') + timestreaminfluxdb = _utilities.lazy_import('pulumi_aws.timestreaminfluxdb') timestreamwrite = _utilities.lazy_import('pulumi_aws.timestreamwrite') transcribe = _utilities.lazy_import('pulumi_aws.transcribe') transfer = _utilities.lazy_import('pulumi_aws.transfer') @@ -2078,6 +2081,22 @@ "aws:cfg/rule:Rule": "Rule" } }, + { + "pkg": "aws", + "mod": "chatbot/slackChannelConfiguration", + "fqn": "pulumi_aws.chatbot", + "classes": { + "aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration": "SlackChannelConfiguration" + } + }, + { + "pkg": "aws", + "mod": "chatbot/teamsChannelConfiguration", + "fqn": "pulumi_aws.chatbot", + "classes": { + "aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration": "TeamsChannelConfiguration" + } + }, { "pkg": "aws", "mod": "chime/sdkvoiceGlobalSettings", @@ -3310,6 +3329,14 @@ "aws:datazone/environmentBlueprintConfiguration:EnvironmentBlueprintConfiguration": "EnvironmentBlueprintConfiguration" } }, + { + "pkg": "aws", + "mod": "datazone/glossary", + "fqn": "pulumi_aws.datazone", + "classes": { + "aws:datazone/glossary:Glossary": "Glossary" + } + }, { "pkg": "aws", "mod": "datazone/project", @@ -4958,6 +4985,14 @@ "aws:ecr/repository:Repository": "Repository" } }, + { + "pkg": "aws", + "mod": "ecr/repositoryCreationTemplate", + "fqn": "pulumi_aws.ecr", + "classes": { + "aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate": "RepositoryCreationTemplate" + } + }, { "pkg": "aws", "mod": "ecr/repositoryPolicy", @@ -11190,6 +11225,14 @@ "aws:synthetics/groupAssociation:GroupAssociation": "GroupAssociation" } }, + { + "pkg": "aws", + "mod": "timestreaminfluxdb/dbInstance", + "fqn": "pulumi_aws.timestreaminfluxdb", + "classes": { + "aws:timestreaminfluxdb/dbInstance:DbInstance": "DbInstance" + } + }, { "pkg": "aws", "mod": "timestreamwrite/database", diff --git a/sdk/python/pulumi_aws/_inputs.py b/sdk/python/pulumi_aws/_inputs.py index d62d7d2f63b..b36bdc43a38 100644 --- a/sdk/python/pulumi_aws/_inputs.py +++ b/sdk/python/pulumi_aws/_inputs.py @@ -1292,6 +1292,10 @@ class ProviderEndpointArgsDict(TypedDict): """ Use this to override the default service endpoint URL """ + resiliencehub: NotRequired[pulumi.Input[str]] + """ + Use this to override the default service endpoint URL + """ resourceexplorer2: NotRequired[pulumi.Input[str]] """ Use this to override the default service endpoint URL @@ -1777,6 +1781,7 @@ def __init__(__self__, *, redshiftdataapiservice: Optional[pulumi.Input[str]] = None, redshiftserverless: Optional[pulumi.Input[str]] = None, rekognition: Optional[pulumi.Input[str]] = None, + resiliencehub: Optional[pulumi.Input[str]] = None, resourceexplorer2: Optional[pulumi.Input[str]] = None, resourcegroups: Optional[pulumi.Input[str]] = None, resourcegroupstagging: Optional[pulumi.Input[str]] = None, @@ -2065,6 +2070,7 @@ def __init__(__self__, *, :param pulumi.Input[str] redshiftdataapiservice: Use this to override the default service endpoint URL :param pulumi.Input[str] redshiftserverless: Use this to override the default service endpoint URL :param pulumi.Input[str] rekognition: Use this to override the default service endpoint URL + :param pulumi.Input[str] resiliencehub: Use this to override the default service endpoint URL :param pulumi.Input[str] resourceexplorer2: Use this to override the default service endpoint URL :param pulumi.Input[str] resourcegroups: Use this to override the default service endpoint URL :param pulumi.Input[str] resourcegroupstagging: Use this to override the default service endpoint URL @@ -2576,6 +2582,8 @@ def __init__(__self__, *, pulumi.set(__self__, "redshiftserverless", redshiftserverless) if rekognition is not None: pulumi.set(__self__, "rekognition", rekognition) + if resiliencehub is not None: + pulumi.set(__self__, "resiliencehub", resiliencehub) if resourceexplorer2 is not None: pulumi.set(__self__, "resourceexplorer2", resourceexplorer2) if resourcegroups is not None: @@ -5381,6 +5389,18 @@ def rekognition(self) -> Optional[pulumi.Input[str]]: def rekognition(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "rekognition", value) + @property + @pulumi.getter + def resiliencehub(self) -> Optional[pulumi.Input[str]]: + """ + Use this to override the default service endpoint URL + """ + return pulumi.get(self, "resiliencehub") + + @resiliencehub.setter + def resiliencehub(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "resiliencehub", value) + @property @pulumi.getter def resourceexplorer2(self) -> Optional[pulumi.Input[str]]: diff --git a/sdk/python/pulumi_aws/appsync/_inputs.py b/sdk/python/pulumi_aws/appsync/_inputs.py index 623608c978e..09876fbd00d 100644 --- a/sdk/python/pulumi_aws/appsync/_inputs.py +++ b/sdk/python/pulumi_aws/appsync/_inputs.py @@ -51,6 +51,8 @@ 'GraphQLApiAdditionalAuthenticationProviderOpenidConnectConfigArgsDict', 'GraphQLApiAdditionalAuthenticationProviderUserPoolConfigArgs', 'GraphQLApiAdditionalAuthenticationProviderUserPoolConfigArgsDict', + 'GraphQLApiEnhancedMetricsConfigArgs', + 'GraphQLApiEnhancedMetricsConfigArgsDict', 'GraphQLApiLambdaAuthorizerConfigArgs', 'GraphQLApiLambdaAuthorizerConfigArgsDict', 'GraphQLApiLogConfigArgs', @@ -1214,6 +1216,75 @@ def aws_region(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "aws_region", value) +if not MYPY: + class GraphQLApiEnhancedMetricsConfigArgsDict(TypedDict): + data_source_level_metrics_behavior: pulumi.Input[str] + """ + How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + """ + operation_level_metrics_config: pulumi.Input[str] + """ + How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + """ + resolver_level_metrics_behavior: pulumi.Input[str] + """ + How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + """ +elif False: + GraphQLApiEnhancedMetricsConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class GraphQLApiEnhancedMetricsConfigArgs: + def __init__(__self__, *, + data_source_level_metrics_behavior: pulumi.Input[str], + operation_level_metrics_config: pulumi.Input[str], + resolver_level_metrics_behavior: pulumi.Input[str]): + """ + :param pulumi.Input[str] data_source_level_metrics_behavior: How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + :param pulumi.Input[str] operation_level_metrics_config: How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + :param pulumi.Input[str] resolver_level_metrics_behavior: How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + """ + pulumi.set(__self__, "data_source_level_metrics_behavior", data_source_level_metrics_behavior) + pulumi.set(__self__, "operation_level_metrics_config", operation_level_metrics_config) + pulumi.set(__self__, "resolver_level_metrics_behavior", resolver_level_metrics_behavior) + + @property + @pulumi.getter(name="dataSourceLevelMetricsBehavior") + def data_source_level_metrics_behavior(self) -> pulumi.Input[str]: + """ + How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + """ + return pulumi.get(self, "data_source_level_metrics_behavior") + + @data_source_level_metrics_behavior.setter + def data_source_level_metrics_behavior(self, value: pulumi.Input[str]): + pulumi.set(self, "data_source_level_metrics_behavior", value) + + @property + @pulumi.getter(name="operationLevelMetricsConfig") + def operation_level_metrics_config(self) -> pulumi.Input[str]: + """ + How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + """ + return pulumi.get(self, "operation_level_metrics_config") + + @operation_level_metrics_config.setter + def operation_level_metrics_config(self, value: pulumi.Input[str]): + pulumi.set(self, "operation_level_metrics_config", value) + + @property + @pulumi.getter(name="resolverLevelMetricsBehavior") + def resolver_level_metrics_behavior(self) -> pulumi.Input[str]: + """ + How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + """ + return pulumi.get(self, "resolver_level_metrics_behavior") + + @resolver_level_metrics_behavior.setter + def resolver_level_metrics_behavior(self, value: pulumi.Input[str]): + pulumi.set(self, "resolver_level_metrics_behavior", value) + + if not MYPY: class GraphQLApiLambdaAuthorizerConfigArgsDict(TypedDict): authorizer_uri: pulumi.Input[str] diff --git a/sdk/python/pulumi_aws/appsync/graph_ql_api.py b/sdk/python/pulumi_aws/appsync/graph_ql_api.py index 564712944a3..2966ec4ca9b 100644 --- a/sdk/python/pulumi_aws/appsync/graph_ql_api.py +++ b/sdk/python/pulumi_aws/appsync/graph_ql_api.py @@ -23,6 +23,7 @@ class GraphQLApiArgs: def __init__(__self__, *, authentication_type: pulumi.Input[str], additional_authentication_providers: Optional[pulumi.Input[Sequence[pulumi.Input['GraphQLApiAdditionalAuthenticationProviderArgs']]]] = None, + enhanced_metrics_config: Optional[pulumi.Input['GraphQLApiEnhancedMetricsConfigArgs']] = None, introspection_config: Optional[pulumi.Input[str]] = None, lambda_authorizer_config: Optional[pulumi.Input['GraphQLApiLambdaAuthorizerConfigArgs']] = None, log_config: Optional[pulumi.Input['GraphQLApiLogConfigArgs']] = None, @@ -39,10 +40,13 @@ def __init__(__self__, *, The set of arguments for constructing a GraphQLApi resource. :param pulumi.Input[str] authentication_type: Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA` :param pulumi.Input[Sequence[pulumi.Input['GraphQLApiAdditionalAuthenticationProviderArgs']]] additional_authentication_providers: One or more additional authentication providers for the GraphSQL API. See `additional_authentication_provider` Block for details. + :param pulumi.Input['GraphQLApiEnhancedMetricsConfigArgs'] enhanced_metrics_config: Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. :param pulumi.Input[str] introspection_config: Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). :param pulumi.Input['GraphQLApiLambdaAuthorizerConfigArgs'] lambda_authorizer_config: Nested argument containing Lambda authorizer configuration. See `lambda_authorizer_config` Block for details. :param pulumi.Input['GraphQLApiLogConfigArgs'] log_config: Nested argument containing logging configuration. See `log_config` Block for details. :param pulumi.Input[str] name: User-supplied name for the GraphSQL API. + + The following arguments are optional: :param pulumi.Input['GraphQLApiOpenidConnectConfigArgs'] openid_connect_config: Nested argument containing OpenID Connect configuration. See `openid_connect_config` Block for details. :param pulumi.Input[int] query_depth_limit: The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query. The default value is `0` (or unspecified), which indicates there's no depth limit. If you set a limit, it can be between `1` and `75` nested levels. This field will produce a limit error if the operation falls out of bounds. @@ -57,6 +61,8 @@ def __init__(__self__, *, pulumi.set(__self__, "authentication_type", authentication_type) if additional_authentication_providers is not None: pulumi.set(__self__, "additional_authentication_providers", additional_authentication_providers) + if enhanced_metrics_config is not None: + pulumi.set(__self__, "enhanced_metrics_config", enhanced_metrics_config) if introspection_config is not None: pulumi.set(__self__, "introspection_config", introspection_config) if lambda_authorizer_config is not None: @@ -106,6 +112,18 @@ def additional_authentication_providers(self) -> Optional[pulumi.Input[Sequence[ def additional_authentication_providers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['GraphQLApiAdditionalAuthenticationProviderArgs']]]]): pulumi.set(self, "additional_authentication_providers", value) + @property + @pulumi.getter(name="enhancedMetricsConfig") + def enhanced_metrics_config(self) -> Optional[pulumi.Input['GraphQLApiEnhancedMetricsConfigArgs']]: + """ + Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + """ + return pulumi.get(self, "enhanced_metrics_config") + + @enhanced_metrics_config.setter + def enhanced_metrics_config(self, value: Optional[pulumi.Input['GraphQLApiEnhancedMetricsConfigArgs']]): + pulumi.set(self, "enhanced_metrics_config", value) + @property @pulumi.getter(name="introspectionConfig") def introspection_config(self) -> Optional[pulumi.Input[str]]: @@ -147,6 +165,8 @@ def log_config(self, value: Optional[pulumi.Input['GraphQLApiLogConfigArgs']]): def name(self) -> Optional[pulumi.Input[str]]: """ User-supplied name for the GraphSQL API. + + The following arguments are optional: """ return pulumi.get(self, "name") @@ -259,6 +279,7 @@ def __init__(__self__, *, additional_authentication_providers: Optional[pulumi.Input[Sequence[pulumi.Input['GraphQLApiAdditionalAuthenticationProviderArgs']]]] = None, arn: Optional[pulumi.Input[str]] = None, authentication_type: Optional[pulumi.Input[str]] = None, + enhanced_metrics_config: Optional[pulumi.Input['GraphQLApiEnhancedMetricsConfigArgs']] = None, introspection_config: Optional[pulumi.Input[str]] = None, lambda_authorizer_config: Optional[pulumi.Input['GraphQLApiLambdaAuthorizerConfigArgs']] = None, log_config: Optional[pulumi.Input['GraphQLApiLogConfigArgs']] = None, @@ -278,10 +299,13 @@ def __init__(__self__, *, :param pulumi.Input[Sequence[pulumi.Input['GraphQLApiAdditionalAuthenticationProviderArgs']]] additional_authentication_providers: One or more additional authentication providers for the GraphSQL API. See `additional_authentication_provider` Block for details. :param pulumi.Input[str] arn: ARN :param pulumi.Input[str] authentication_type: Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA` + :param pulumi.Input['GraphQLApiEnhancedMetricsConfigArgs'] enhanced_metrics_config: Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. :param pulumi.Input[str] introspection_config: Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). :param pulumi.Input['GraphQLApiLambdaAuthorizerConfigArgs'] lambda_authorizer_config: Nested argument containing Lambda authorizer configuration. See `lambda_authorizer_config` Block for details. :param pulumi.Input['GraphQLApiLogConfigArgs'] log_config: Nested argument containing logging configuration. See `log_config` Block for details. :param pulumi.Input[str] name: User-supplied name for the GraphSQL API. + + The following arguments are optional: :param pulumi.Input['GraphQLApiOpenidConnectConfigArgs'] openid_connect_config: Nested argument containing OpenID Connect configuration. See `openid_connect_config` Block for details. :param pulumi.Input[int] query_depth_limit: The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query. The default value is `0` (or unspecified), which indicates there's no depth limit. If you set a limit, it can be between `1` and `75` nested levels. This field will produce a limit error if the operation falls out of bounds. @@ -301,6 +325,8 @@ def __init__(__self__, *, pulumi.set(__self__, "arn", arn) if authentication_type is not None: pulumi.set(__self__, "authentication_type", authentication_type) + if enhanced_metrics_config is not None: + pulumi.set(__self__, "enhanced_metrics_config", enhanced_metrics_config) if introspection_config is not None: pulumi.set(__self__, "introspection_config", introspection_config) if lambda_authorizer_config is not None: @@ -369,6 +395,18 @@ def authentication_type(self) -> Optional[pulumi.Input[str]]: def authentication_type(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "authentication_type", value) + @property + @pulumi.getter(name="enhancedMetricsConfig") + def enhanced_metrics_config(self) -> Optional[pulumi.Input['GraphQLApiEnhancedMetricsConfigArgs']]: + """ + Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + """ + return pulumi.get(self, "enhanced_metrics_config") + + @enhanced_metrics_config.setter + def enhanced_metrics_config(self, value: Optional[pulumi.Input['GraphQLApiEnhancedMetricsConfigArgs']]): + pulumi.set(self, "enhanced_metrics_config", value) + @property @pulumi.getter(name="introspectionConfig") def introspection_config(self) -> Optional[pulumi.Input[str]]: @@ -410,6 +448,8 @@ def log_config(self, value: Optional[pulumi.Input['GraphQLApiLogConfigArgs']]): def name(self) -> Optional[pulumi.Input[str]]: """ User-supplied name for the GraphSQL API. + + The following arguments are optional: """ return pulumi.get(self, "name") @@ -548,6 +588,7 @@ def __init__(__self__, opts: Optional[pulumi.ResourceOptions] = None, additional_authentication_providers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['GraphQLApiAdditionalAuthenticationProviderArgs', 'GraphQLApiAdditionalAuthenticationProviderArgsDict']]]]] = None, authentication_type: Optional[pulumi.Input[str]] = None, + enhanced_metrics_config: Optional[pulumi.Input[Union['GraphQLApiEnhancedMetricsConfigArgs', 'GraphQLApiEnhancedMetricsConfigArgsDict']]] = None, introspection_config: Optional[pulumi.Input[str]] = None, lambda_authorizer_config: Optional[pulumi.Input[Union['GraphQLApiLambdaAuthorizerConfigArgs', 'GraphQLApiLambdaAuthorizerConfigArgsDict']]] = None, log_config: Optional[pulumi.Input[Union['GraphQLApiLogConfigArgs', 'GraphQLApiLogConfigArgsDict']]] = None, @@ -567,10 +608,13 @@ def __init__(__self__, :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[Sequence[pulumi.Input[Union['GraphQLApiAdditionalAuthenticationProviderArgs', 'GraphQLApiAdditionalAuthenticationProviderArgsDict']]]] additional_authentication_providers: One or more additional authentication providers for the GraphSQL API. See `additional_authentication_provider` Block for details. :param pulumi.Input[str] authentication_type: Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA` + :param pulumi.Input[Union['GraphQLApiEnhancedMetricsConfigArgs', 'GraphQLApiEnhancedMetricsConfigArgsDict']] enhanced_metrics_config: Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. :param pulumi.Input[str] introspection_config: Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). :param pulumi.Input[Union['GraphQLApiLambdaAuthorizerConfigArgs', 'GraphQLApiLambdaAuthorizerConfigArgsDict']] lambda_authorizer_config: Nested argument containing Lambda authorizer configuration. See `lambda_authorizer_config` Block for details. :param pulumi.Input[Union['GraphQLApiLogConfigArgs', 'GraphQLApiLogConfigArgsDict']] log_config: Nested argument containing logging configuration. See `log_config` Block for details. :param pulumi.Input[str] name: User-supplied name for the GraphSQL API. + + The following arguments are optional: :param pulumi.Input[Union['GraphQLApiOpenidConnectConfigArgs', 'GraphQLApiOpenidConnectConfigArgsDict']] openid_connect_config: Nested argument containing OpenID Connect configuration. See `openid_connect_config` Block for details. :param pulumi.Input[int] query_depth_limit: The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query. The default value is `0` (or unspecified), which indicates there's no depth limit. If you set a limit, it can be between `1` and `75` nested levels. This field will produce a limit error if the operation falls out of bounds. @@ -607,6 +651,7 @@ def _internal_init(__self__, opts: Optional[pulumi.ResourceOptions] = None, additional_authentication_providers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['GraphQLApiAdditionalAuthenticationProviderArgs', 'GraphQLApiAdditionalAuthenticationProviderArgsDict']]]]] = None, authentication_type: Optional[pulumi.Input[str]] = None, + enhanced_metrics_config: Optional[pulumi.Input[Union['GraphQLApiEnhancedMetricsConfigArgs', 'GraphQLApiEnhancedMetricsConfigArgsDict']]] = None, introspection_config: Optional[pulumi.Input[str]] = None, lambda_authorizer_config: Optional[pulumi.Input[Union['GraphQLApiLambdaAuthorizerConfigArgs', 'GraphQLApiLambdaAuthorizerConfigArgsDict']]] = None, log_config: Optional[pulumi.Input[Union['GraphQLApiLogConfigArgs', 'GraphQLApiLogConfigArgsDict']]] = None, @@ -632,6 +677,7 @@ def _internal_init(__self__, if authentication_type is None and not opts.urn: raise TypeError("Missing required property 'authentication_type'") __props__.__dict__["authentication_type"] = authentication_type + __props__.__dict__["enhanced_metrics_config"] = enhanced_metrics_config __props__.__dict__["introspection_config"] = introspection_config __props__.__dict__["lambda_authorizer_config"] = lambda_authorizer_config __props__.__dict__["log_config"] = log_config @@ -660,6 +706,7 @@ def get(resource_name: str, additional_authentication_providers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['GraphQLApiAdditionalAuthenticationProviderArgs', 'GraphQLApiAdditionalAuthenticationProviderArgsDict']]]]] = None, arn: Optional[pulumi.Input[str]] = None, authentication_type: Optional[pulumi.Input[str]] = None, + enhanced_metrics_config: Optional[pulumi.Input[Union['GraphQLApiEnhancedMetricsConfigArgs', 'GraphQLApiEnhancedMetricsConfigArgsDict']]] = None, introspection_config: Optional[pulumi.Input[str]] = None, lambda_authorizer_config: Optional[pulumi.Input[Union['GraphQLApiLambdaAuthorizerConfigArgs', 'GraphQLApiLambdaAuthorizerConfigArgsDict']]] = None, log_config: Optional[pulumi.Input[Union['GraphQLApiLogConfigArgs', 'GraphQLApiLogConfigArgsDict']]] = None, @@ -684,10 +731,13 @@ def get(resource_name: str, :param pulumi.Input[Sequence[pulumi.Input[Union['GraphQLApiAdditionalAuthenticationProviderArgs', 'GraphQLApiAdditionalAuthenticationProviderArgsDict']]]] additional_authentication_providers: One or more additional authentication providers for the GraphSQL API. See `additional_authentication_provider` Block for details. :param pulumi.Input[str] arn: ARN :param pulumi.Input[str] authentication_type: Authentication type. Valid values: `API_KEY`, `AWS_IAM`, `AMAZON_COGNITO_USER_POOLS`, `OPENID_CONNECT`, `AWS_LAMBDA` + :param pulumi.Input[Union['GraphQLApiEnhancedMetricsConfigArgs', 'GraphQLApiEnhancedMetricsConfigArgsDict']] enhanced_metrics_config: Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. :param pulumi.Input[str] introspection_config: Sets the value of the GraphQL API to enable (`ENABLED`) or disable (`DISABLED`) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). :param pulumi.Input[Union['GraphQLApiLambdaAuthorizerConfigArgs', 'GraphQLApiLambdaAuthorizerConfigArgsDict']] lambda_authorizer_config: Nested argument containing Lambda authorizer configuration. See `lambda_authorizer_config` Block for details. :param pulumi.Input[Union['GraphQLApiLogConfigArgs', 'GraphQLApiLogConfigArgsDict']] log_config: Nested argument containing logging configuration. See `log_config` Block for details. :param pulumi.Input[str] name: User-supplied name for the GraphSQL API. + + The following arguments are optional: :param pulumi.Input[Union['GraphQLApiOpenidConnectConfigArgs', 'GraphQLApiOpenidConnectConfigArgsDict']] openid_connect_config: Nested argument containing OpenID Connect configuration. See `openid_connect_config` Block for details. :param pulumi.Input[int] query_depth_limit: The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query. The default value is `0` (or unspecified), which indicates there's no depth limit. If you set a limit, it can be between `1` and `75` nested levels. This field will produce a limit error if the operation falls out of bounds. @@ -708,6 +758,7 @@ def get(resource_name: str, __props__.__dict__["additional_authentication_providers"] = additional_authentication_providers __props__.__dict__["arn"] = arn __props__.__dict__["authentication_type"] = authentication_type + __props__.__dict__["enhanced_metrics_config"] = enhanced_metrics_config __props__.__dict__["introspection_config"] = introspection_config __props__.__dict__["lambda_authorizer_config"] = lambda_authorizer_config __props__.__dict__["log_config"] = log_config @@ -748,6 +799,14 @@ def authentication_type(self) -> pulumi.Output[str]: """ return pulumi.get(self, "authentication_type") + @property + @pulumi.getter(name="enhancedMetricsConfig") + def enhanced_metrics_config(self) -> pulumi.Output[Optional['outputs.GraphQLApiEnhancedMetricsConfig']]: + """ + Enables and controls the enhanced metrics feature. See `enhanced_metrics_config` Block for details. + """ + return pulumi.get(self, "enhanced_metrics_config") + @property @pulumi.getter(name="introspectionConfig") def introspection_config(self) -> pulumi.Output[Optional[str]]: @@ -777,6 +836,8 @@ def log_config(self) -> pulumi.Output[Optional['outputs.GraphQLApiLogConfig']]: def name(self) -> pulumi.Output[str]: """ User-supplied name for the GraphSQL API. + + The following arguments are optional: """ return pulumi.get(self, "name") diff --git a/sdk/python/pulumi_aws/appsync/outputs.py b/sdk/python/pulumi_aws/appsync/outputs.py index 78374f9837a..2503e3aaca2 100644 --- a/sdk/python/pulumi_aws/appsync/outputs.py +++ b/sdk/python/pulumi_aws/appsync/outputs.py @@ -34,6 +34,7 @@ 'GraphQLApiAdditionalAuthenticationProviderLambdaAuthorizerConfig', 'GraphQLApiAdditionalAuthenticationProviderOpenidConnectConfig', 'GraphQLApiAdditionalAuthenticationProviderUserPoolConfig', + 'GraphQLApiEnhancedMetricsConfig', 'GraphQLApiLambdaAuthorizerConfig', 'GraphQLApiLogConfig', 'GraphQLApiOpenidConnectConfig', @@ -1032,6 +1033,67 @@ def aws_region(self) -> Optional[str]: return pulumi.get(self, "aws_region") +@pulumi.output_type +class GraphQLApiEnhancedMetricsConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "dataSourceLevelMetricsBehavior": + suggest = "data_source_level_metrics_behavior" + elif key == "operationLevelMetricsConfig": + suggest = "operation_level_metrics_config" + elif key == "resolverLevelMetricsBehavior": + suggest = "resolver_level_metrics_behavior" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in GraphQLApiEnhancedMetricsConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + GraphQLApiEnhancedMetricsConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + GraphQLApiEnhancedMetricsConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + data_source_level_metrics_behavior: str, + operation_level_metrics_config: str, + resolver_level_metrics_behavior: str): + """ + :param str data_source_level_metrics_behavior: How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + :param str operation_level_metrics_config: How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + :param str resolver_level_metrics_behavior: How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + """ + pulumi.set(__self__, "data_source_level_metrics_behavior", data_source_level_metrics_behavior) + pulumi.set(__self__, "operation_level_metrics_config", operation_level_metrics_config) + pulumi.set(__self__, "resolver_level_metrics_behavior", resolver_level_metrics_behavior) + + @property + @pulumi.getter(name="dataSourceLevelMetricsBehavior") + def data_source_level_metrics_behavior(self) -> str: + """ + How data source metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_DATA_SOURCE_METRICS`, `PER_DATA_SOURCE_METRICS` + """ + return pulumi.get(self, "data_source_level_metrics_behavior") + + @property + @pulumi.getter(name="operationLevelMetricsConfig") + def operation_level_metrics_config(self) -> str: + """ + How operation metrics will be emitted to CloudWatch. Valid values: `ENABLED`, `DISABLED` + """ + return pulumi.get(self, "operation_level_metrics_config") + + @property + @pulumi.getter(name="resolverLevelMetricsBehavior") + def resolver_level_metrics_behavior(self) -> str: + """ + How resolver metrics will be emitted to CloudWatch. Valid values: `FULL_REQUEST_RESOLVER_METRICS`, `PER_RESOLVER_METRICS` + """ + return pulumi.get(self, "resolver_level_metrics_behavior") + + @pulumi.output_type class GraphQLApiLambdaAuthorizerConfig(dict): @staticmethod diff --git a/sdk/python/pulumi_aws/chatbot/__init__.py b/sdk/python/pulumi_aws/chatbot/__init__.py index 7dff9e557a1..3b516f16b4c 100644 --- a/sdk/python/pulumi_aws/chatbot/__init__.py +++ b/sdk/python/pulumi_aws/chatbot/__init__.py @@ -6,3 +6,7 @@ import typing # Export this package's modules as members: from .get_slack_workspace import * +from .slack_channel_configuration import * +from .teams_channel_configuration import * +from ._inputs import * +from . import outputs diff --git a/sdk/python/pulumi_aws/chatbot/_inputs.py b/sdk/python/pulumi_aws/chatbot/_inputs.py new file mode 100644 index 00000000000..9e743fc0a67 --- /dev/null +++ b/sdk/python/pulumi_aws/chatbot/_inputs.py @@ -0,0 +1,169 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities + +__all__ = [ + 'SlackChannelConfigurationTimeoutsArgs', + 'SlackChannelConfigurationTimeoutsArgsDict', + 'TeamsChannelConfigurationTimeoutsArgs', + 'TeamsChannelConfigurationTimeoutsArgsDict', +] + +MYPY = False + +if not MYPY: + class SlackChannelConfigurationTimeoutsArgsDict(TypedDict): + create: NotRequired[pulumi.Input[str]] + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + delete: NotRequired[pulumi.Input[str]] + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + """ + update: NotRequired[pulumi.Input[str]] + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ +elif False: + SlackChannelConfigurationTimeoutsArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class SlackChannelConfigurationTimeoutsArgs: + def __init__(__self__, *, + create: Optional[pulumi.Input[str]] = None, + delete: Optional[pulumi.Input[str]] = None, + update: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] create: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + :param pulumi.Input[str] delete: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + :param pulumi.Input[str] update: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + if create is not None: + pulumi.set(__self__, "create", create) + if delete is not None: + pulumi.set(__self__, "delete", delete) + if update is not None: + pulumi.set(__self__, "update", update) + + @property + @pulumi.getter + def create(self) -> Optional[pulumi.Input[str]]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + return pulumi.get(self, "create") + + @create.setter + def create(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "create", value) + + @property + @pulumi.getter + def delete(self) -> Optional[pulumi.Input[str]]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + """ + return pulumi.get(self, "delete") + + @delete.setter + def delete(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "delete", value) + + @property + @pulumi.getter + def update(self) -> Optional[pulumi.Input[str]]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + return pulumi.get(self, "update") + + @update.setter + def update(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "update", value) + + +if not MYPY: + class TeamsChannelConfigurationTimeoutsArgsDict(TypedDict): + create: NotRequired[pulumi.Input[str]] + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + delete: NotRequired[pulumi.Input[str]] + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + """ + update: NotRequired[pulumi.Input[str]] + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ +elif False: + TeamsChannelConfigurationTimeoutsArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class TeamsChannelConfigurationTimeoutsArgs: + def __init__(__self__, *, + create: Optional[pulumi.Input[str]] = None, + delete: Optional[pulumi.Input[str]] = None, + update: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] create: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + :param pulumi.Input[str] delete: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + :param pulumi.Input[str] update: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + if create is not None: + pulumi.set(__self__, "create", create) + if delete is not None: + pulumi.set(__self__, "delete", delete) + if update is not None: + pulumi.set(__self__, "update", update) + + @property + @pulumi.getter + def create(self) -> Optional[pulumi.Input[str]]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + return pulumi.get(self, "create") + + @create.setter + def create(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "create", value) + + @property + @pulumi.getter + def delete(self) -> Optional[pulumi.Input[str]]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + """ + return pulumi.get(self, "delete") + + @delete.setter + def delete(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "delete", value) + + @property + @pulumi.getter + def update(self) -> Optional[pulumi.Input[str]]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + return pulumi.get(self, "update") + + @update.setter + def update(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "update", value) + + diff --git a/sdk/python/pulumi_aws/chatbot/outputs.py b/sdk/python/pulumi_aws/chatbot/outputs.py new file mode 100644 index 00000000000..16641ea5696 --- /dev/null +++ b/sdk/python/pulumi_aws/chatbot/outputs.py @@ -0,0 +1,107 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities + +__all__ = [ + 'SlackChannelConfigurationTimeouts', + 'TeamsChannelConfigurationTimeouts', +] + +@pulumi.output_type +class SlackChannelConfigurationTimeouts(dict): + def __init__(__self__, *, + create: Optional[str] = None, + delete: Optional[str] = None, + update: Optional[str] = None): + """ + :param str create: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + :param str delete: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + :param str update: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + if create is not None: + pulumi.set(__self__, "create", create) + if delete is not None: + pulumi.set(__self__, "delete", delete) + if update is not None: + pulumi.set(__self__, "update", update) + + @property + @pulumi.getter + def create(self) -> Optional[str]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + return pulumi.get(self, "create") + + @property + @pulumi.getter + def delete(self) -> Optional[str]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + """ + return pulumi.get(self, "delete") + + @property + @pulumi.getter + def update(self) -> Optional[str]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + return pulumi.get(self, "update") + + +@pulumi.output_type +class TeamsChannelConfigurationTimeouts(dict): + def __init__(__self__, *, + create: Optional[str] = None, + delete: Optional[str] = None, + update: Optional[str] = None): + """ + :param str create: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + :param str delete: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + :param str update: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + if create is not None: + pulumi.set(__self__, "create", create) + if delete is not None: + pulumi.set(__self__, "delete", delete) + if update is not None: + pulumi.set(__self__, "update", update) + + @property + @pulumi.getter + def create(self) -> Optional[str]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + return pulumi.get(self, "create") + + @property + @pulumi.getter + def delete(self) -> Optional[str]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + """ + return pulumi.get(self, "delete") + + @property + @pulumi.getter + def update(self) -> Optional[str]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + return pulumi.get(self, "update") + + diff --git a/sdk/python/pulumi_aws/chatbot/slack_channel_configuration.py b/sdk/python/pulumi_aws/chatbot/slack_channel_configuration.py new file mode 100644 index 00000000000..3ca2d121899 --- /dev/null +++ b/sdk/python/pulumi_aws/chatbot/slack_channel_configuration.py @@ -0,0 +1,749 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['SlackChannelConfigurationArgs', 'SlackChannelConfiguration'] + +@pulumi.input_type +class SlackChannelConfigurationArgs: + def __init__(__self__, *, + configuration_name: pulumi.Input[str], + iam_role_arn: pulumi.Input[str], + slack_channel_id: pulumi.Input[str], + slack_team_id: pulumi.Input[str], + guardrail_policy_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + logging_level: Optional[pulumi.Input[str]] = None, + sns_topic_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + timeouts: Optional[pulumi.Input['SlackChannelConfigurationTimeoutsArgs']] = None, + user_authorization_required: Optional[pulumi.Input[bool]] = None): + """ + The set of arguments for constructing a SlackChannelConfiguration resource. + :param pulumi.Input[str] configuration_name: Name of the Slack channel configuration. + :param pulumi.Input[str] iam_role_arn: User-defined role that AWS Chatbot assumes. This is not the service-linked role. + :param pulumi.Input[str] slack_channel_id: ID of the Slack channel. For example, `C07EZ1ABC23`. + :param pulumi.Input[str] slack_team_id: ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + + The following arguments are optional: + :param pulumi.Input[Sequence[pulumi.Input[str]]] guardrail_policy_arns: List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + :param pulumi.Input[str] logging_level: Logging levels include `ERROR`, `INFO`, or `NONE`. + :param pulumi.Input[Sequence[pulumi.Input[str]]] sns_topic_arns: ARNs of the SNS topics that deliver notifications to AWS Chatbot. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags assigned to the resource. + :param pulumi.Input[bool] user_authorization_required: Enables use of a user role requirement in your chat configuration. + """ + pulumi.set(__self__, "configuration_name", configuration_name) + pulumi.set(__self__, "iam_role_arn", iam_role_arn) + pulumi.set(__self__, "slack_channel_id", slack_channel_id) + pulumi.set(__self__, "slack_team_id", slack_team_id) + if guardrail_policy_arns is not None: + pulumi.set(__self__, "guardrail_policy_arns", guardrail_policy_arns) + if logging_level is not None: + pulumi.set(__self__, "logging_level", logging_level) + if sns_topic_arns is not None: + pulumi.set(__self__, "sns_topic_arns", sns_topic_arns) + if tags is not None: + pulumi.set(__self__, "tags", tags) + if timeouts is not None: + pulumi.set(__self__, "timeouts", timeouts) + if user_authorization_required is not None: + pulumi.set(__self__, "user_authorization_required", user_authorization_required) + + @property + @pulumi.getter(name="configurationName") + def configuration_name(self) -> pulumi.Input[str]: + """ + Name of the Slack channel configuration. + """ + return pulumi.get(self, "configuration_name") + + @configuration_name.setter + def configuration_name(self, value: pulumi.Input[str]): + pulumi.set(self, "configuration_name", value) + + @property + @pulumi.getter(name="iamRoleArn") + def iam_role_arn(self) -> pulumi.Input[str]: + """ + User-defined role that AWS Chatbot assumes. This is not the service-linked role. + """ + return pulumi.get(self, "iam_role_arn") + + @iam_role_arn.setter + def iam_role_arn(self, value: pulumi.Input[str]): + pulumi.set(self, "iam_role_arn", value) + + @property + @pulumi.getter(name="slackChannelId") + def slack_channel_id(self) -> pulumi.Input[str]: + """ + ID of the Slack channel. For example, `C07EZ1ABC23`. + """ + return pulumi.get(self, "slack_channel_id") + + @slack_channel_id.setter + def slack_channel_id(self, value: pulumi.Input[str]): + pulumi.set(self, "slack_channel_id", value) + + @property + @pulumi.getter(name="slackTeamId") + def slack_team_id(self) -> pulumi.Input[str]: + """ + ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + + The following arguments are optional: + """ + return pulumi.get(self, "slack_team_id") + + @slack_team_id.setter + def slack_team_id(self, value: pulumi.Input[str]): + pulumi.set(self, "slack_team_id", value) + + @property + @pulumi.getter(name="guardrailPolicyArns") + def guardrail_policy_arns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + """ + return pulumi.get(self, "guardrail_policy_arns") + + @guardrail_policy_arns.setter + def guardrail_policy_arns(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "guardrail_policy_arns", value) + + @property + @pulumi.getter(name="loggingLevel") + def logging_level(self) -> Optional[pulumi.Input[str]]: + """ + Logging levels include `ERROR`, `INFO`, or `NONE`. + """ + return pulumi.get(self, "logging_level") + + @logging_level.setter + def logging_level(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "logging_level", value) + + @property + @pulumi.getter(name="snsTopicArns") + def sns_topic_arns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + ARNs of the SNS topics that deliver notifications to AWS Chatbot. + """ + return pulumi.get(self, "sns_topic_arns") + + @sns_topic_arns.setter + def sns_topic_arns(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "sns_topic_arns", value) + + @property + @pulumi.getter + def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Map of tags assigned to the resource. + """ + return pulumi.get(self, "tags") + + @tags.setter + def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "tags", value) + + @property + @pulumi.getter + def timeouts(self) -> Optional[pulumi.Input['SlackChannelConfigurationTimeoutsArgs']]: + return pulumi.get(self, "timeouts") + + @timeouts.setter + def timeouts(self, value: Optional[pulumi.Input['SlackChannelConfigurationTimeoutsArgs']]): + pulumi.set(self, "timeouts", value) + + @property + @pulumi.getter(name="userAuthorizationRequired") + def user_authorization_required(self) -> Optional[pulumi.Input[bool]]: + """ + Enables use of a user role requirement in your chat configuration. + """ + return pulumi.get(self, "user_authorization_required") + + @user_authorization_required.setter + def user_authorization_required(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "user_authorization_required", value) + + +@pulumi.input_type +class _SlackChannelConfigurationState: + def __init__(__self__, *, + chat_configuration_arn: Optional[pulumi.Input[str]] = None, + configuration_name: Optional[pulumi.Input[str]] = None, + guardrail_policy_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + iam_role_arn: Optional[pulumi.Input[str]] = None, + logging_level: Optional[pulumi.Input[str]] = None, + slack_channel_id: Optional[pulumi.Input[str]] = None, + slack_channel_name: Optional[pulumi.Input[str]] = None, + slack_team_id: Optional[pulumi.Input[str]] = None, + slack_team_name: Optional[pulumi.Input[str]] = None, + sns_topic_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + timeouts: Optional[pulumi.Input['SlackChannelConfigurationTimeoutsArgs']] = None, + user_authorization_required: Optional[pulumi.Input[bool]] = None): + """ + Input properties used for looking up and filtering SlackChannelConfiguration resources. + :param pulumi.Input[str] chat_configuration_arn: ARN of the Slack channel configuration. + :param pulumi.Input[str] configuration_name: Name of the Slack channel configuration. + :param pulumi.Input[Sequence[pulumi.Input[str]]] guardrail_policy_arns: List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + :param pulumi.Input[str] iam_role_arn: User-defined role that AWS Chatbot assumes. This is not the service-linked role. + :param pulumi.Input[str] logging_level: Logging levels include `ERROR`, `INFO`, or `NONE`. + :param pulumi.Input[str] slack_channel_id: ID of the Slack channel. For example, `C07EZ1ABC23`. + :param pulumi.Input[str] slack_channel_name: Name of the Slack channel. + :param pulumi.Input[str] slack_team_id: ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + + The following arguments are optional: + :param pulumi.Input[str] slack_team_name: Name of the Slack team. + :param pulumi.Input[Sequence[pulumi.Input[str]]] sns_topic_arns: ARNs of the SNS topics that deliver notifications to AWS Chatbot. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags assigned to the resource. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags_all: Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + :param pulumi.Input[bool] user_authorization_required: Enables use of a user role requirement in your chat configuration. + """ + if chat_configuration_arn is not None: + pulumi.set(__self__, "chat_configuration_arn", chat_configuration_arn) + if configuration_name is not None: + pulumi.set(__self__, "configuration_name", configuration_name) + if guardrail_policy_arns is not None: + pulumi.set(__self__, "guardrail_policy_arns", guardrail_policy_arns) + if iam_role_arn is not None: + pulumi.set(__self__, "iam_role_arn", iam_role_arn) + if logging_level is not None: + pulumi.set(__self__, "logging_level", logging_level) + if slack_channel_id is not None: + pulumi.set(__self__, "slack_channel_id", slack_channel_id) + if slack_channel_name is not None: + pulumi.set(__self__, "slack_channel_name", slack_channel_name) + if slack_team_id is not None: + pulumi.set(__self__, "slack_team_id", slack_team_id) + if slack_team_name is not None: + pulumi.set(__self__, "slack_team_name", slack_team_name) + if sns_topic_arns is not None: + pulumi.set(__self__, "sns_topic_arns", sns_topic_arns) + if tags is not None: + pulumi.set(__self__, "tags", tags) + if tags_all is not None: + warnings.warn("""Please use `tags` instead.""", DeprecationWarning) + pulumi.log.warn("""tags_all is deprecated: Please use `tags` instead.""") + if tags_all is not None: + pulumi.set(__self__, "tags_all", tags_all) + if timeouts is not None: + pulumi.set(__self__, "timeouts", timeouts) + if user_authorization_required is not None: + pulumi.set(__self__, "user_authorization_required", user_authorization_required) + + @property + @pulumi.getter(name="chatConfigurationArn") + def chat_configuration_arn(self) -> Optional[pulumi.Input[str]]: + """ + ARN of the Slack channel configuration. + """ + return pulumi.get(self, "chat_configuration_arn") + + @chat_configuration_arn.setter + def chat_configuration_arn(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "chat_configuration_arn", value) + + @property + @pulumi.getter(name="configurationName") + def configuration_name(self) -> Optional[pulumi.Input[str]]: + """ + Name of the Slack channel configuration. + """ + return pulumi.get(self, "configuration_name") + + @configuration_name.setter + def configuration_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "configuration_name", value) + + @property + @pulumi.getter(name="guardrailPolicyArns") + def guardrail_policy_arns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + """ + return pulumi.get(self, "guardrail_policy_arns") + + @guardrail_policy_arns.setter + def guardrail_policy_arns(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "guardrail_policy_arns", value) + + @property + @pulumi.getter(name="iamRoleArn") + def iam_role_arn(self) -> Optional[pulumi.Input[str]]: + """ + User-defined role that AWS Chatbot assumes. This is not the service-linked role. + """ + return pulumi.get(self, "iam_role_arn") + + @iam_role_arn.setter + def iam_role_arn(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "iam_role_arn", value) + + @property + @pulumi.getter(name="loggingLevel") + def logging_level(self) -> Optional[pulumi.Input[str]]: + """ + Logging levels include `ERROR`, `INFO`, or `NONE`. + """ + return pulumi.get(self, "logging_level") + + @logging_level.setter + def logging_level(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "logging_level", value) + + @property + @pulumi.getter(name="slackChannelId") + def slack_channel_id(self) -> Optional[pulumi.Input[str]]: + """ + ID of the Slack channel. For example, `C07EZ1ABC23`. + """ + return pulumi.get(self, "slack_channel_id") + + @slack_channel_id.setter + def slack_channel_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "slack_channel_id", value) + + @property + @pulumi.getter(name="slackChannelName") + def slack_channel_name(self) -> Optional[pulumi.Input[str]]: + """ + Name of the Slack channel. + """ + return pulumi.get(self, "slack_channel_name") + + @slack_channel_name.setter + def slack_channel_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "slack_channel_name", value) + + @property + @pulumi.getter(name="slackTeamId") + def slack_team_id(self) -> Optional[pulumi.Input[str]]: + """ + ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + + The following arguments are optional: + """ + return pulumi.get(self, "slack_team_id") + + @slack_team_id.setter + def slack_team_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "slack_team_id", value) + + @property + @pulumi.getter(name="slackTeamName") + def slack_team_name(self) -> Optional[pulumi.Input[str]]: + """ + Name of the Slack team. + """ + return pulumi.get(self, "slack_team_name") + + @slack_team_name.setter + def slack_team_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "slack_team_name", value) + + @property + @pulumi.getter(name="snsTopicArns") + def sns_topic_arns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + ARNs of the SNS topics that deliver notifications to AWS Chatbot. + """ + return pulumi.get(self, "sns_topic_arns") + + @sns_topic_arns.setter + def sns_topic_arns(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "sns_topic_arns", value) + + @property + @pulumi.getter + def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Map of tags assigned to the resource. + """ + return pulumi.get(self, "tags") + + @tags.setter + def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "tags", value) + + @property + @pulumi.getter(name="tagsAll") + @_utilities.deprecated("""Please use `tags` instead.""") + def tags_all(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + """ + return pulumi.get(self, "tags_all") + + @tags_all.setter + def tags_all(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "tags_all", value) + + @property + @pulumi.getter + def timeouts(self) -> Optional[pulumi.Input['SlackChannelConfigurationTimeoutsArgs']]: + return pulumi.get(self, "timeouts") + + @timeouts.setter + def timeouts(self, value: Optional[pulumi.Input['SlackChannelConfigurationTimeoutsArgs']]): + pulumi.set(self, "timeouts", value) + + @property + @pulumi.getter(name="userAuthorizationRequired") + def user_authorization_required(self) -> Optional[pulumi.Input[bool]]: + """ + Enables use of a user role requirement in your chat configuration. + """ + return pulumi.get(self, "user_authorization_required") + + @user_authorization_required.setter + def user_authorization_required(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "user_authorization_required", value) + + +class SlackChannelConfiguration(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + configuration_name: Optional[pulumi.Input[str]] = None, + guardrail_policy_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + iam_role_arn: Optional[pulumi.Input[str]] = None, + logging_level: Optional[pulumi.Input[str]] = None, + slack_channel_id: Optional[pulumi.Input[str]] = None, + slack_team_id: Optional[pulumi.Input[str]] = None, + sns_topic_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + timeouts: Optional[pulumi.Input[Union['SlackChannelConfigurationTimeoutsArgs', 'SlackChannelConfigurationTimeoutsArgsDict']]] = None, + user_authorization_required: Optional[pulumi.Input[bool]] = None, + __props__=None): + """ + Resource for managing an AWS Chatbot Slack Channel Configuration. + + ## Example Usage + + ### Basic Usage + + ```python + import pulumi + import pulumi_aws as aws + + test = aws.chatbot.SlackChannelConfiguration("test", + configuration_name="min-slaka-kanal", + iam_role_arn=test_aws_iam_role["arn"], + slack_channel_id="C07EZ1ABC23", + slack_team_id="T07EA123LEP", + tags={ + "Name": "min-slaka-kanal", + }) + ``` + + ## Import + + Using `pulumi import`, import Chatbot Slack Channel Configuration using the `chat_configuration_arn`. For example: + + ```sh + $ pulumi import aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration example arn:aws:chatbot::012345678901:chat-configuration/slack-channel/min-slaka-kanal + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] configuration_name: Name of the Slack channel configuration. + :param pulumi.Input[Sequence[pulumi.Input[str]]] guardrail_policy_arns: List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + :param pulumi.Input[str] iam_role_arn: User-defined role that AWS Chatbot assumes. This is not the service-linked role. + :param pulumi.Input[str] logging_level: Logging levels include `ERROR`, `INFO`, or `NONE`. + :param pulumi.Input[str] slack_channel_id: ID of the Slack channel. For example, `C07EZ1ABC23`. + :param pulumi.Input[str] slack_team_id: ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + + The following arguments are optional: + :param pulumi.Input[Sequence[pulumi.Input[str]]] sns_topic_arns: ARNs of the SNS topics that deliver notifications to AWS Chatbot. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags assigned to the resource. + :param pulumi.Input[bool] user_authorization_required: Enables use of a user role requirement in your chat configuration. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: SlackChannelConfigurationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Resource for managing an AWS Chatbot Slack Channel Configuration. + + ## Example Usage + + ### Basic Usage + + ```python + import pulumi + import pulumi_aws as aws + + test = aws.chatbot.SlackChannelConfiguration("test", + configuration_name="min-slaka-kanal", + iam_role_arn=test_aws_iam_role["arn"], + slack_channel_id="C07EZ1ABC23", + slack_team_id="T07EA123LEP", + tags={ + "Name": "min-slaka-kanal", + }) + ``` + + ## Import + + Using `pulumi import`, import Chatbot Slack Channel Configuration using the `chat_configuration_arn`. For example: + + ```sh + $ pulumi import aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration example arn:aws:chatbot::012345678901:chat-configuration/slack-channel/min-slaka-kanal + ``` + + :param str resource_name: The name of the resource. + :param SlackChannelConfigurationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(SlackChannelConfigurationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + configuration_name: Optional[pulumi.Input[str]] = None, + guardrail_policy_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + iam_role_arn: Optional[pulumi.Input[str]] = None, + logging_level: Optional[pulumi.Input[str]] = None, + slack_channel_id: Optional[pulumi.Input[str]] = None, + slack_team_id: Optional[pulumi.Input[str]] = None, + sns_topic_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + timeouts: Optional[pulumi.Input[Union['SlackChannelConfigurationTimeoutsArgs', 'SlackChannelConfigurationTimeoutsArgsDict']]] = None, + user_authorization_required: Optional[pulumi.Input[bool]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = SlackChannelConfigurationArgs.__new__(SlackChannelConfigurationArgs) + + if configuration_name is None and not opts.urn: + raise TypeError("Missing required property 'configuration_name'") + __props__.__dict__["configuration_name"] = configuration_name + __props__.__dict__["guardrail_policy_arns"] = guardrail_policy_arns + if iam_role_arn is None and not opts.urn: + raise TypeError("Missing required property 'iam_role_arn'") + __props__.__dict__["iam_role_arn"] = iam_role_arn + __props__.__dict__["logging_level"] = logging_level + if slack_channel_id is None and not opts.urn: + raise TypeError("Missing required property 'slack_channel_id'") + __props__.__dict__["slack_channel_id"] = slack_channel_id + if slack_team_id is None and not opts.urn: + raise TypeError("Missing required property 'slack_team_id'") + __props__.__dict__["slack_team_id"] = slack_team_id + __props__.__dict__["sns_topic_arns"] = sns_topic_arns + __props__.__dict__["tags"] = tags + __props__.__dict__["timeouts"] = timeouts + __props__.__dict__["user_authorization_required"] = user_authorization_required + __props__.__dict__["chat_configuration_arn"] = None + __props__.__dict__["slack_channel_name"] = None + __props__.__dict__["slack_team_name"] = None + __props__.__dict__["tags_all"] = None + super(SlackChannelConfiguration, __self__).__init__( + 'aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + chat_configuration_arn: Optional[pulumi.Input[str]] = None, + configuration_name: Optional[pulumi.Input[str]] = None, + guardrail_policy_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + iam_role_arn: Optional[pulumi.Input[str]] = None, + logging_level: Optional[pulumi.Input[str]] = None, + slack_channel_id: Optional[pulumi.Input[str]] = None, + slack_channel_name: Optional[pulumi.Input[str]] = None, + slack_team_id: Optional[pulumi.Input[str]] = None, + slack_team_name: Optional[pulumi.Input[str]] = None, + sns_topic_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + timeouts: Optional[pulumi.Input[Union['SlackChannelConfigurationTimeoutsArgs', 'SlackChannelConfigurationTimeoutsArgsDict']]] = None, + user_authorization_required: Optional[pulumi.Input[bool]] = None) -> 'SlackChannelConfiguration': + """ + Get an existing SlackChannelConfiguration resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] chat_configuration_arn: ARN of the Slack channel configuration. + :param pulumi.Input[str] configuration_name: Name of the Slack channel configuration. + :param pulumi.Input[Sequence[pulumi.Input[str]]] guardrail_policy_arns: List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + :param pulumi.Input[str] iam_role_arn: User-defined role that AWS Chatbot assumes. This is not the service-linked role. + :param pulumi.Input[str] logging_level: Logging levels include `ERROR`, `INFO`, or `NONE`. + :param pulumi.Input[str] slack_channel_id: ID of the Slack channel. For example, `C07EZ1ABC23`. + :param pulumi.Input[str] slack_channel_name: Name of the Slack channel. + :param pulumi.Input[str] slack_team_id: ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + + The following arguments are optional: + :param pulumi.Input[str] slack_team_name: Name of the Slack team. + :param pulumi.Input[Sequence[pulumi.Input[str]]] sns_topic_arns: ARNs of the SNS topics that deliver notifications to AWS Chatbot. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags assigned to the resource. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags_all: Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + :param pulumi.Input[bool] user_authorization_required: Enables use of a user role requirement in your chat configuration. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _SlackChannelConfigurationState.__new__(_SlackChannelConfigurationState) + + __props__.__dict__["chat_configuration_arn"] = chat_configuration_arn + __props__.__dict__["configuration_name"] = configuration_name + __props__.__dict__["guardrail_policy_arns"] = guardrail_policy_arns + __props__.__dict__["iam_role_arn"] = iam_role_arn + __props__.__dict__["logging_level"] = logging_level + __props__.__dict__["slack_channel_id"] = slack_channel_id + __props__.__dict__["slack_channel_name"] = slack_channel_name + __props__.__dict__["slack_team_id"] = slack_team_id + __props__.__dict__["slack_team_name"] = slack_team_name + __props__.__dict__["sns_topic_arns"] = sns_topic_arns + __props__.__dict__["tags"] = tags + __props__.__dict__["tags_all"] = tags_all + __props__.__dict__["timeouts"] = timeouts + __props__.__dict__["user_authorization_required"] = user_authorization_required + return SlackChannelConfiguration(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="chatConfigurationArn") + def chat_configuration_arn(self) -> pulumi.Output[str]: + """ + ARN of the Slack channel configuration. + """ + return pulumi.get(self, "chat_configuration_arn") + + @property + @pulumi.getter(name="configurationName") + def configuration_name(self) -> pulumi.Output[str]: + """ + Name of the Slack channel configuration. + """ + return pulumi.get(self, "configuration_name") + + @property + @pulumi.getter(name="guardrailPolicyArns") + def guardrail_policy_arns(self) -> pulumi.Output[Sequence[str]]: + """ + List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + """ + return pulumi.get(self, "guardrail_policy_arns") + + @property + @pulumi.getter(name="iamRoleArn") + def iam_role_arn(self) -> pulumi.Output[str]: + """ + User-defined role that AWS Chatbot assumes. This is not the service-linked role. + """ + return pulumi.get(self, "iam_role_arn") + + @property + @pulumi.getter(name="loggingLevel") + def logging_level(self) -> pulumi.Output[str]: + """ + Logging levels include `ERROR`, `INFO`, or `NONE`. + """ + return pulumi.get(self, "logging_level") + + @property + @pulumi.getter(name="slackChannelId") + def slack_channel_id(self) -> pulumi.Output[str]: + """ + ID of the Slack channel. For example, `C07EZ1ABC23`. + """ + return pulumi.get(self, "slack_channel_id") + + @property + @pulumi.getter(name="slackChannelName") + def slack_channel_name(self) -> pulumi.Output[str]: + """ + Name of the Slack channel. + """ + return pulumi.get(self, "slack_channel_name") + + @property + @pulumi.getter(name="slackTeamId") + def slack_team_id(self) -> pulumi.Output[str]: + """ + ID of the Slack workspace authorized with AWS Chatbot. For example, `T07EA123LEP`. + + The following arguments are optional: + """ + return pulumi.get(self, "slack_team_id") + + @property + @pulumi.getter(name="slackTeamName") + def slack_team_name(self) -> pulumi.Output[str]: + """ + Name of the Slack team. + """ + return pulumi.get(self, "slack_team_name") + + @property + @pulumi.getter(name="snsTopicArns") + def sns_topic_arns(self) -> pulumi.Output[Sequence[str]]: + """ + ARNs of the SNS topics that deliver notifications to AWS Chatbot. + """ + return pulumi.get(self, "sns_topic_arns") + + @property + @pulumi.getter + def tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]: + """ + Map of tags assigned to the resource. + """ + return pulumi.get(self, "tags") + + @property + @pulumi.getter(name="tagsAll") + @_utilities.deprecated("""Please use `tags` instead.""") + def tags_all(self) -> pulumi.Output[Mapping[str, str]]: + """ + Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + """ + return pulumi.get(self, "tags_all") + + @property + @pulumi.getter + def timeouts(self) -> pulumi.Output[Optional['outputs.SlackChannelConfigurationTimeouts']]: + return pulumi.get(self, "timeouts") + + @property + @pulumi.getter(name="userAuthorizationRequired") + def user_authorization_required(self) -> pulumi.Output[bool]: + """ + Enables use of a user role requirement in your chat configuration. + """ + return pulumi.get(self, "user_authorization_required") + diff --git a/sdk/python/pulumi_aws/chatbot/teams_channel_configuration.py b/sdk/python/pulumi_aws/chatbot/teams_channel_configuration.py new file mode 100644 index 00000000000..7bfe2461bb4 --- /dev/null +++ b/sdk/python/pulumi_aws/chatbot/teams_channel_configuration.py @@ -0,0 +1,841 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['TeamsChannelConfigurationArgs', 'TeamsChannelConfiguration'] + +@pulumi.input_type +class TeamsChannelConfigurationArgs: + def __init__(__self__, *, + channel_id: pulumi.Input[str], + configuration_name: pulumi.Input[str], + iam_role_arn: pulumi.Input[str], + team_id: pulumi.Input[str], + tenant_id: pulumi.Input[str], + channel_name: Optional[pulumi.Input[str]] = None, + guardrail_policy_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + logging_level: Optional[pulumi.Input[str]] = None, + sns_topic_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + team_name: Optional[pulumi.Input[str]] = None, + timeouts: Optional[pulumi.Input['TeamsChannelConfigurationTimeoutsArgs']] = None, + user_authorization_required: Optional[pulumi.Input[bool]] = None): + """ + The set of arguments for constructing a TeamsChannelConfiguration resource. + :param pulumi.Input[str] channel_id: ID of the Microsoft Teams channel. + :param pulumi.Input[str] configuration_name: Name of the Microsoft Teams channel configuration. + :param pulumi.Input[str] iam_role_arn: ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + :param pulumi.Input[str] team_id: ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + :param pulumi.Input[str] tenant_id: ID of the Microsoft Teams tenant. + + The following arguments are optional: + :param pulumi.Input[str] channel_name: Name of the Microsoft Teams channel. + :param pulumi.Input[Sequence[pulumi.Input[str]]] guardrail_policy_arns: List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + :param pulumi.Input[str] logging_level: Logging levels include `ERROR`, `INFO`, or `NONE`. + :param pulumi.Input[Sequence[pulumi.Input[str]]] sns_topic_arns: ARNs of the SNS topics that deliver notifications to AWS Chatbot. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags assigned to the resource. + :param pulumi.Input[str] team_name: Name of the Microsoft Teams team. + :param pulumi.Input[bool] user_authorization_required: Enables use of a user role requirement in your chat configuration. + """ + pulumi.set(__self__, "channel_id", channel_id) + pulumi.set(__self__, "configuration_name", configuration_name) + pulumi.set(__self__, "iam_role_arn", iam_role_arn) + pulumi.set(__self__, "team_id", team_id) + pulumi.set(__self__, "tenant_id", tenant_id) + if channel_name is not None: + pulumi.set(__self__, "channel_name", channel_name) + if guardrail_policy_arns is not None: + pulumi.set(__self__, "guardrail_policy_arns", guardrail_policy_arns) + if logging_level is not None: + pulumi.set(__self__, "logging_level", logging_level) + if sns_topic_arns is not None: + pulumi.set(__self__, "sns_topic_arns", sns_topic_arns) + if tags is not None: + pulumi.set(__self__, "tags", tags) + if team_name is not None: + pulumi.set(__self__, "team_name", team_name) + if timeouts is not None: + pulumi.set(__self__, "timeouts", timeouts) + if user_authorization_required is not None: + pulumi.set(__self__, "user_authorization_required", user_authorization_required) + + @property + @pulumi.getter(name="channelId") + def channel_id(self) -> pulumi.Input[str]: + """ + ID of the Microsoft Teams channel. + """ + return pulumi.get(self, "channel_id") + + @channel_id.setter + def channel_id(self, value: pulumi.Input[str]): + pulumi.set(self, "channel_id", value) + + @property + @pulumi.getter(name="configurationName") + def configuration_name(self) -> pulumi.Input[str]: + """ + Name of the Microsoft Teams channel configuration. + """ + return pulumi.get(self, "configuration_name") + + @configuration_name.setter + def configuration_name(self, value: pulumi.Input[str]): + pulumi.set(self, "configuration_name", value) + + @property + @pulumi.getter(name="iamRoleArn") + def iam_role_arn(self) -> pulumi.Input[str]: + """ + ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + """ + return pulumi.get(self, "iam_role_arn") + + @iam_role_arn.setter + def iam_role_arn(self, value: pulumi.Input[str]): + pulumi.set(self, "iam_role_arn", value) + + @property + @pulumi.getter(name="teamId") + def team_id(self) -> pulumi.Input[str]: + """ + ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + """ + return pulumi.get(self, "team_id") + + @team_id.setter + def team_id(self, value: pulumi.Input[str]): + pulumi.set(self, "team_id", value) + + @property + @pulumi.getter(name="tenantId") + def tenant_id(self) -> pulumi.Input[str]: + """ + ID of the Microsoft Teams tenant. + + The following arguments are optional: + """ + return pulumi.get(self, "tenant_id") + + @tenant_id.setter + def tenant_id(self, value: pulumi.Input[str]): + pulumi.set(self, "tenant_id", value) + + @property + @pulumi.getter(name="channelName") + def channel_name(self) -> Optional[pulumi.Input[str]]: + """ + Name of the Microsoft Teams channel. + """ + return pulumi.get(self, "channel_name") + + @channel_name.setter + def channel_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "channel_name", value) + + @property + @pulumi.getter(name="guardrailPolicyArns") + def guardrail_policy_arns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + """ + return pulumi.get(self, "guardrail_policy_arns") + + @guardrail_policy_arns.setter + def guardrail_policy_arns(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "guardrail_policy_arns", value) + + @property + @pulumi.getter(name="loggingLevel") + def logging_level(self) -> Optional[pulumi.Input[str]]: + """ + Logging levels include `ERROR`, `INFO`, or `NONE`. + """ + return pulumi.get(self, "logging_level") + + @logging_level.setter + def logging_level(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "logging_level", value) + + @property + @pulumi.getter(name="snsTopicArns") + def sns_topic_arns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + ARNs of the SNS topics that deliver notifications to AWS Chatbot. + """ + return pulumi.get(self, "sns_topic_arns") + + @sns_topic_arns.setter + def sns_topic_arns(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "sns_topic_arns", value) + + @property + @pulumi.getter + def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Map of tags assigned to the resource. + """ + return pulumi.get(self, "tags") + + @tags.setter + def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "tags", value) + + @property + @pulumi.getter(name="teamName") + def team_name(self) -> Optional[pulumi.Input[str]]: + """ + Name of the Microsoft Teams team. + """ + return pulumi.get(self, "team_name") + + @team_name.setter + def team_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "team_name", value) + + @property + @pulumi.getter + def timeouts(self) -> Optional[pulumi.Input['TeamsChannelConfigurationTimeoutsArgs']]: + return pulumi.get(self, "timeouts") + + @timeouts.setter + def timeouts(self, value: Optional[pulumi.Input['TeamsChannelConfigurationTimeoutsArgs']]): + pulumi.set(self, "timeouts", value) + + @property + @pulumi.getter(name="userAuthorizationRequired") + def user_authorization_required(self) -> Optional[pulumi.Input[bool]]: + """ + Enables use of a user role requirement in your chat configuration. + """ + return pulumi.get(self, "user_authorization_required") + + @user_authorization_required.setter + def user_authorization_required(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "user_authorization_required", value) + + +@pulumi.input_type +class _TeamsChannelConfigurationState: + def __init__(__self__, *, + channel_id: Optional[pulumi.Input[str]] = None, + channel_name: Optional[pulumi.Input[str]] = None, + chat_configuration_arn: Optional[pulumi.Input[str]] = None, + configuration_name: Optional[pulumi.Input[str]] = None, + guardrail_policy_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + iam_role_arn: Optional[pulumi.Input[str]] = None, + logging_level: Optional[pulumi.Input[str]] = None, + sns_topic_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + team_id: Optional[pulumi.Input[str]] = None, + team_name: Optional[pulumi.Input[str]] = None, + tenant_id: Optional[pulumi.Input[str]] = None, + timeouts: Optional[pulumi.Input['TeamsChannelConfigurationTimeoutsArgs']] = None, + user_authorization_required: Optional[pulumi.Input[bool]] = None): + """ + Input properties used for looking up and filtering TeamsChannelConfiguration resources. + :param pulumi.Input[str] channel_id: ID of the Microsoft Teams channel. + :param pulumi.Input[str] channel_name: Name of the Microsoft Teams channel. + :param pulumi.Input[str] chat_configuration_arn: ARN of the Microsoft Teams channel configuration. + :param pulumi.Input[str] configuration_name: Name of the Microsoft Teams channel configuration. + :param pulumi.Input[Sequence[pulumi.Input[str]]] guardrail_policy_arns: List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + :param pulumi.Input[str] iam_role_arn: ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + :param pulumi.Input[str] logging_level: Logging levels include `ERROR`, `INFO`, or `NONE`. + :param pulumi.Input[Sequence[pulumi.Input[str]]] sns_topic_arns: ARNs of the SNS topics that deliver notifications to AWS Chatbot. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags assigned to the resource. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags_all: Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + :param pulumi.Input[str] team_id: ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + :param pulumi.Input[str] team_name: Name of the Microsoft Teams team. + :param pulumi.Input[str] tenant_id: ID of the Microsoft Teams tenant. + + The following arguments are optional: + :param pulumi.Input[bool] user_authorization_required: Enables use of a user role requirement in your chat configuration. + """ + if channel_id is not None: + pulumi.set(__self__, "channel_id", channel_id) + if channel_name is not None: + pulumi.set(__self__, "channel_name", channel_name) + if chat_configuration_arn is not None: + pulumi.set(__self__, "chat_configuration_arn", chat_configuration_arn) + if configuration_name is not None: + pulumi.set(__self__, "configuration_name", configuration_name) + if guardrail_policy_arns is not None: + pulumi.set(__self__, "guardrail_policy_arns", guardrail_policy_arns) + if iam_role_arn is not None: + pulumi.set(__self__, "iam_role_arn", iam_role_arn) + if logging_level is not None: + pulumi.set(__self__, "logging_level", logging_level) + if sns_topic_arns is not None: + pulumi.set(__self__, "sns_topic_arns", sns_topic_arns) + if tags is not None: + pulumi.set(__self__, "tags", tags) + if tags_all is not None: + warnings.warn("""Please use `tags` instead.""", DeprecationWarning) + pulumi.log.warn("""tags_all is deprecated: Please use `tags` instead.""") + if tags_all is not None: + pulumi.set(__self__, "tags_all", tags_all) + if team_id is not None: + pulumi.set(__self__, "team_id", team_id) + if team_name is not None: + pulumi.set(__self__, "team_name", team_name) + if tenant_id is not None: + pulumi.set(__self__, "tenant_id", tenant_id) + if timeouts is not None: + pulumi.set(__self__, "timeouts", timeouts) + if user_authorization_required is not None: + pulumi.set(__self__, "user_authorization_required", user_authorization_required) + + @property + @pulumi.getter(name="channelId") + def channel_id(self) -> Optional[pulumi.Input[str]]: + """ + ID of the Microsoft Teams channel. + """ + return pulumi.get(self, "channel_id") + + @channel_id.setter + def channel_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "channel_id", value) + + @property + @pulumi.getter(name="channelName") + def channel_name(self) -> Optional[pulumi.Input[str]]: + """ + Name of the Microsoft Teams channel. + """ + return pulumi.get(self, "channel_name") + + @channel_name.setter + def channel_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "channel_name", value) + + @property + @pulumi.getter(name="chatConfigurationArn") + def chat_configuration_arn(self) -> Optional[pulumi.Input[str]]: + """ + ARN of the Microsoft Teams channel configuration. + """ + return pulumi.get(self, "chat_configuration_arn") + + @chat_configuration_arn.setter + def chat_configuration_arn(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "chat_configuration_arn", value) + + @property + @pulumi.getter(name="configurationName") + def configuration_name(self) -> Optional[pulumi.Input[str]]: + """ + Name of the Microsoft Teams channel configuration. + """ + return pulumi.get(self, "configuration_name") + + @configuration_name.setter + def configuration_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "configuration_name", value) + + @property + @pulumi.getter(name="guardrailPolicyArns") + def guardrail_policy_arns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + """ + return pulumi.get(self, "guardrail_policy_arns") + + @guardrail_policy_arns.setter + def guardrail_policy_arns(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "guardrail_policy_arns", value) + + @property + @pulumi.getter(name="iamRoleArn") + def iam_role_arn(self) -> Optional[pulumi.Input[str]]: + """ + ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + """ + return pulumi.get(self, "iam_role_arn") + + @iam_role_arn.setter + def iam_role_arn(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "iam_role_arn", value) + + @property + @pulumi.getter(name="loggingLevel") + def logging_level(self) -> Optional[pulumi.Input[str]]: + """ + Logging levels include `ERROR`, `INFO`, or `NONE`. + """ + return pulumi.get(self, "logging_level") + + @logging_level.setter + def logging_level(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "logging_level", value) + + @property + @pulumi.getter(name="snsTopicArns") + def sns_topic_arns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + ARNs of the SNS topics that deliver notifications to AWS Chatbot. + """ + return pulumi.get(self, "sns_topic_arns") + + @sns_topic_arns.setter + def sns_topic_arns(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "sns_topic_arns", value) + + @property + @pulumi.getter + def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Map of tags assigned to the resource. + """ + return pulumi.get(self, "tags") + + @tags.setter + def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "tags", value) + + @property + @pulumi.getter(name="tagsAll") + @_utilities.deprecated("""Please use `tags` instead.""") + def tags_all(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + """ + return pulumi.get(self, "tags_all") + + @tags_all.setter + def tags_all(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "tags_all", value) + + @property + @pulumi.getter(name="teamId") + def team_id(self) -> Optional[pulumi.Input[str]]: + """ + ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + """ + return pulumi.get(self, "team_id") + + @team_id.setter + def team_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "team_id", value) + + @property + @pulumi.getter(name="teamName") + def team_name(self) -> Optional[pulumi.Input[str]]: + """ + Name of the Microsoft Teams team. + """ + return pulumi.get(self, "team_name") + + @team_name.setter + def team_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "team_name", value) + + @property + @pulumi.getter(name="tenantId") + def tenant_id(self) -> Optional[pulumi.Input[str]]: + """ + ID of the Microsoft Teams tenant. + + The following arguments are optional: + """ + return pulumi.get(self, "tenant_id") + + @tenant_id.setter + def tenant_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "tenant_id", value) + + @property + @pulumi.getter + def timeouts(self) -> Optional[pulumi.Input['TeamsChannelConfigurationTimeoutsArgs']]: + return pulumi.get(self, "timeouts") + + @timeouts.setter + def timeouts(self, value: Optional[pulumi.Input['TeamsChannelConfigurationTimeoutsArgs']]): + pulumi.set(self, "timeouts", value) + + @property + @pulumi.getter(name="userAuthorizationRequired") + def user_authorization_required(self) -> Optional[pulumi.Input[bool]]: + """ + Enables use of a user role requirement in your chat configuration. + """ + return pulumi.get(self, "user_authorization_required") + + @user_authorization_required.setter + def user_authorization_required(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "user_authorization_required", value) + + +class TeamsChannelConfiguration(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + channel_id: Optional[pulumi.Input[str]] = None, + channel_name: Optional[pulumi.Input[str]] = None, + configuration_name: Optional[pulumi.Input[str]] = None, + guardrail_policy_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + iam_role_arn: Optional[pulumi.Input[str]] = None, + logging_level: Optional[pulumi.Input[str]] = None, + sns_topic_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + team_id: Optional[pulumi.Input[str]] = None, + team_name: Optional[pulumi.Input[str]] = None, + tenant_id: Optional[pulumi.Input[str]] = None, + timeouts: Optional[pulumi.Input[Union['TeamsChannelConfigurationTimeoutsArgs', 'TeamsChannelConfigurationTimeoutsArgsDict']]] = None, + user_authorization_required: Optional[pulumi.Input[bool]] = None, + __props__=None): + """ + Resource for managing an AWS Chatbot Microsoft Teams Channel Configuration. + + > **NOTE:** We provide this resource on a best-effort basis. If you are able to test it and find it useful, we welcome your input at GitHub. + + ## Example Usage + + ### Basic Usage + + ```python + import pulumi + import pulumi_aws as aws + + test = aws.chatbot.TeamsChannelConfiguration("test", + channel_id="C07EZ1ABC23", + configuration_name="mitt-lags-kanal", + iam_role_arn=test_aws_iam_role["arn"], + team_id="74361522-da01-538d-aa2e-ac7918c6bb92", + tenant_id="1234", + tags={ + "Name": "mitt-lags-kanal", + }) + ``` + + ## Import + + Using `pulumi import`, import Chatbot Microsoft Teams Channel Configuration using the `team_id`. For example: + + ```sh + $ pulumi import aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration example 5f4f15d2-b958-522a-8333-124aa8bf0925 + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] channel_id: ID of the Microsoft Teams channel. + :param pulumi.Input[str] channel_name: Name of the Microsoft Teams channel. + :param pulumi.Input[str] configuration_name: Name of the Microsoft Teams channel configuration. + :param pulumi.Input[Sequence[pulumi.Input[str]]] guardrail_policy_arns: List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + :param pulumi.Input[str] iam_role_arn: ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + :param pulumi.Input[str] logging_level: Logging levels include `ERROR`, `INFO`, or `NONE`. + :param pulumi.Input[Sequence[pulumi.Input[str]]] sns_topic_arns: ARNs of the SNS topics that deliver notifications to AWS Chatbot. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags assigned to the resource. + :param pulumi.Input[str] team_id: ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + :param pulumi.Input[str] team_name: Name of the Microsoft Teams team. + :param pulumi.Input[str] tenant_id: ID of the Microsoft Teams tenant. + + The following arguments are optional: + :param pulumi.Input[bool] user_authorization_required: Enables use of a user role requirement in your chat configuration. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: TeamsChannelConfigurationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Resource for managing an AWS Chatbot Microsoft Teams Channel Configuration. + + > **NOTE:** We provide this resource on a best-effort basis. If you are able to test it and find it useful, we welcome your input at GitHub. + + ## Example Usage + + ### Basic Usage + + ```python + import pulumi + import pulumi_aws as aws + + test = aws.chatbot.TeamsChannelConfiguration("test", + channel_id="C07EZ1ABC23", + configuration_name="mitt-lags-kanal", + iam_role_arn=test_aws_iam_role["arn"], + team_id="74361522-da01-538d-aa2e-ac7918c6bb92", + tenant_id="1234", + tags={ + "Name": "mitt-lags-kanal", + }) + ``` + + ## Import + + Using `pulumi import`, import Chatbot Microsoft Teams Channel Configuration using the `team_id`. For example: + + ```sh + $ pulumi import aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration example 5f4f15d2-b958-522a-8333-124aa8bf0925 + ``` + + :param str resource_name: The name of the resource. + :param TeamsChannelConfigurationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(TeamsChannelConfigurationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + channel_id: Optional[pulumi.Input[str]] = None, + channel_name: Optional[pulumi.Input[str]] = None, + configuration_name: Optional[pulumi.Input[str]] = None, + guardrail_policy_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + iam_role_arn: Optional[pulumi.Input[str]] = None, + logging_level: Optional[pulumi.Input[str]] = None, + sns_topic_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + team_id: Optional[pulumi.Input[str]] = None, + team_name: Optional[pulumi.Input[str]] = None, + tenant_id: Optional[pulumi.Input[str]] = None, + timeouts: Optional[pulumi.Input[Union['TeamsChannelConfigurationTimeoutsArgs', 'TeamsChannelConfigurationTimeoutsArgsDict']]] = None, + user_authorization_required: Optional[pulumi.Input[bool]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = TeamsChannelConfigurationArgs.__new__(TeamsChannelConfigurationArgs) + + if channel_id is None and not opts.urn: + raise TypeError("Missing required property 'channel_id'") + __props__.__dict__["channel_id"] = channel_id + __props__.__dict__["channel_name"] = channel_name + if configuration_name is None and not opts.urn: + raise TypeError("Missing required property 'configuration_name'") + __props__.__dict__["configuration_name"] = configuration_name + __props__.__dict__["guardrail_policy_arns"] = guardrail_policy_arns + if iam_role_arn is None and not opts.urn: + raise TypeError("Missing required property 'iam_role_arn'") + __props__.__dict__["iam_role_arn"] = iam_role_arn + __props__.__dict__["logging_level"] = logging_level + __props__.__dict__["sns_topic_arns"] = sns_topic_arns + __props__.__dict__["tags"] = tags + if team_id is None and not opts.urn: + raise TypeError("Missing required property 'team_id'") + __props__.__dict__["team_id"] = team_id + __props__.__dict__["team_name"] = team_name + if tenant_id is None and not opts.urn: + raise TypeError("Missing required property 'tenant_id'") + __props__.__dict__["tenant_id"] = tenant_id + __props__.__dict__["timeouts"] = timeouts + __props__.__dict__["user_authorization_required"] = user_authorization_required + __props__.__dict__["chat_configuration_arn"] = None + __props__.__dict__["tags_all"] = None + super(TeamsChannelConfiguration, __self__).__init__( + 'aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + channel_id: Optional[pulumi.Input[str]] = None, + channel_name: Optional[pulumi.Input[str]] = None, + chat_configuration_arn: Optional[pulumi.Input[str]] = None, + configuration_name: Optional[pulumi.Input[str]] = None, + guardrail_policy_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + iam_role_arn: Optional[pulumi.Input[str]] = None, + logging_level: Optional[pulumi.Input[str]] = None, + sns_topic_arns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + team_id: Optional[pulumi.Input[str]] = None, + team_name: Optional[pulumi.Input[str]] = None, + tenant_id: Optional[pulumi.Input[str]] = None, + timeouts: Optional[pulumi.Input[Union['TeamsChannelConfigurationTimeoutsArgs', 'TeamsChannelConfigurationTimeoutsArgsDict']]] = None, + user_authorization_required: Optional[pulumi.Input[bool]] = None) -> 'TeamsChannelConfiguration': + """ + Get an existing TeamsChannelConfiguration resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] channel_id: ID of the Microsoft Teams channel. + :param pulumi.Input[str] channel_name: Name of the Microsoft Teams channel. + :param pulumi.Input[str] chat_configuration_arn: ARN of the Microsoft Teams channel configuration. + :param pulumi.Input[str] configuration_name: Name of the Microsoft Teams channel configuration. + :param pulumi.Input[Sequence[pulumi.Input[str]]] guardrail_policy_arns: List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + :param pulumi.Input[str] iam_role_arn: ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + :param pulumi.Input[str] logging_level: Logging levels include `ERROR`, `INFO`, or `NONE`. + :param pulumi.Input[Sequence[pulumi.Input[str]]] sns_topic_arns: ARNs of the SNS topics that deliver notifications to AWS Chatbot. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags assigned to the resource. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags_all: Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + :param pulumi.Input[str] team_id: ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + :param pulumi.Input[str] team_name: Name of the Microsoft Teams team. + :param pulumi.Input[str] tenant_id: ID of the Microsoft Teams tenant. + + The following arguments are optional: + :param pulumi.Input[bool] user_authorization_required: Enables use of a user role requirement in your chat configuration. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _TeamsChannelConfigurationState.__new__(_TeamsChannelConfigurationState) + + __props__.__dict__["channel_id"] = channel_id + __props__.__dict__["channel_name"] = channel_name + __props__.__dict__["chat_configuration_arn"] = chat_configuration_arn + __props__.__dict__["configuration_name"] = configuration_name + __props__.__dict__["guardrail_policy_arns"] = guardrail_policy_arns + __props__.__dict__["iam_role_arn"] = iam_role_arn + __props__.__dict__["logging_level"] = logging_level + __props__.__dict__["sns_topic_arns"] = sns_topic_arns + __props__.__dict__["tags"] = tags + __props__.__dict__["tags_all"] = tags_all + __props__.__dict__["team_id"] = team_id + __props__.__dict__["team_name"] = team_name + __props__.__dict__["tenant_id"] = tenant_id + __props__.__dict__["timeouts"] = timeouts + __props__.__dict__["user_authorization_required"] = user_authorization_required + return TeamsChannelConfiguration(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="channelId") + def channel_id(self) -> pulumi.Output[str]: + """ + ID of the Microsoft Teams channel. + """ + return pulumi.get(self, "channel_id") + + @property + @pulumi.getter(name="channelName") + def channel_name(self) -> pulumi.Output[str]: + """ + Name of the Microsoft Teams channel. + """ + return pulumi.get(self, "channel_name") + + @property + @pulumi.getter(name="chatConfigurationArn") + def chat_configuration_arn(self) -> pulumi.Output[str]: + """ + ARN of the Microsoft Teams channel configuration. + """ + return pulumi.get(self, "chat_configuration_arn") + + @property + @pulumi.getter(name="configurationName") + def configuration_name(self) -> pulumi.Output[str]: + """ + Name of the Microsoft Teams channel configuration. + """ + return pulumi.get(self, "configuration_name") + + @property + @pulumi.getter(name="guardrailPolicyArns") + def guardrail_policy_arns(self) -> pulumi.Output[Sequence[str]]: + """ + List of IAM policy ARNs that are applied as channel guardrails. The AWS managed `AdministratorAccess` policy is applied by default if this is not set. + """ + return pulumi.get(self, "guardrail_policy_arns") + + @property + @pulumi.getter(name="iamRoleArn") + def iam_role_arn(self) -> pulumi.Output[str]: + """ + ARN of the IAM role that defines the permissions for AWS Chatbot. This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. + """ + return pulumi.get(self, "iam_role_arn") + + @property + @pulumi.getter(name="loggingLevel") + def logging_level(self) -> pulumi.Output[str]: + """ + Logging levels include `ERROR`, `INFO`, or `NONE`. + """ + return pulumi.get(self, "logging_level") + + @property + @pulumi.getter(name="snsTopicArns") + def sns_topic_arns(self) -> pulumi.Output[Sequence[str]]: + """ + ARNs of the SNS topics that deliver notifications to AWS Chatbot. + """ + return pulumi.get(self, "sns_topic_arns") + + @property + @pulumi.getter + def tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]: + """ + Map of tags assigned to the resource. + """ + return pulumi.get(self, "tags") + + @property + @pulumi.getter(name="tagsAll") + @_utilities.deprecated("""Please use `tags` instead.""") + def tags_all(self) -> pulumi.Output[Mapping[str, str]]: + """ + Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + """ + return pulumi.get(self, "tags_all") + + @property + @pulumi.getter(name="teamId") + def team_id(self) -> pulumi.Output[str]: + """ + ID of the Microsoft Team authorized with AWS Chatbot. To get the team ID, you must perform the initial authorization flow with Microsoft Teams in the AWS Chatbot console. Then you can copy and paste the team ID from the console. + """ + return pulumi.get(self, "team_id") + + @property + @pulumi.getter(name="teamName") + def team_name(self) -> pulumi.Output[str]: + """ + Name of the Microsoft Teams team. + """ + return pulumi.get(self, "team_name") + + @property + @pulumi.getter(name="tenantId") + def tenant_id(self) -> pulumi.Output[str]: + """ + ID of the Microsoft Teams tenant. + + The following arguments are optional: + """ + return pulumi.get(self, "tenant_id") + + @property + @pulumi.getter + def timeouts(self) -> pulumi.Output[Optional['outputs.TeamsChannelConfigurationTimeouts']]: + return pulumi.get(self, "timeouts") + + @property + @pulumi.getter(name="userAuthorizationRequired") + def user_authorization_required(self) -> pulumi.Output[bool]: + """ + Enables use of a user role requirement in your chat configuration. + """ + return pulumi.get(self, "user_authorization_required") + diff --git a/sdk/python/pulumi_aws/cloudsearch/_inputs.py b/sdk/python/pulumi_aws/cloudsearch/_inputs.py index b53683b41f1..802c19a1c0a 100644 --- a/sdk/python/pulumi_aws/cloudsearch/_inputs.py +++ b/sdk/python/pulumi_aws/cloudsearch/_inputs.py @@ -81,7 +81,7 @@ def tls_security_policy(self, value: Optional[pulumi.Input[str]]): class DomainIndexFieldArgsDict(TypedDict): name: pulumi.Input[str] """ - A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. """ type: pulumi.Input[str] """ @@ -136,7 +136,7 @@ def __init__(__self__, *, sort: Optional[pulumi.Input[bool]] = None, source_fields: Optional[pulumi.Input[str]] = None): """ - :param pulumi.Input[str] name: A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + :param pulumi.Input[str] name: A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. :param pulumi.Input[str] type: The field type. Valid values: `date`, `date-array`, `double`, `double-array`, `int`, `int-array`, `literal`, `literal-array`, `text`, `text-array`. :param pulumi.Input[str] analysis_scheme: The analysis scheme you want to use for a `text` field. The analysis scheme specifies the language-specific text processing options that are used during indexing. :param pulumi.Input[str] default_value: The default value for the field. This value is used when no value is specified for the field in the document data. @@ -170,7 +170,7 @@ def __init__(__self__, *, @pulumi.getter def name(self) -> pulumi.Input[str]: """ - A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. """ return pulumi.get(self, "name") diff --git a/sdk/python/pulumi_aws/cloudsearch/outputs.py b/sdk/python/pulumi_aws/cloudsearch/outputs.py index 3cfc32f52bf..398398178bb 100644 --- a/sdk/python/pulumi_aws/cloudsearch/outputs.py +++ b/sdk/python/pulumi_aws/cloudsearch/outputs.py @@ -107,7 +107,7 @@ def __init__(__self__, *, sort: Optional[bool] = None, source_fields: Optional[str] = None): """ - :param str name: A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + :param str name: A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. :param str type: The field type. Valid values: `date`, `date-array`, `double`, `double-array`, `int`, `int-array`, `literal`, `literal-array`, `text`, `text-array`. :param str analysis_scheme: The analysis scheme you want to use for a `text` field. The analysis scheme specifies the language-specific text processing options that are used during indexing. :param str default_value: The default value for the field. This value is used when no value is specified for the field in the document data. @@ -141,7 +141,7 @@ def __init__(__self__, *, @pulumi.getter def name(self) -> str: """ - A unique name for the field. Field names must begin with a letter and be at least 3 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. + A unique name for the field. Field names must begin with a letter and be at least 1 and no more than 64 characters long. The allowed characters are: `a`-`z` (lower-case letters), `0`-`9`, and `_` (underscore). The name `score` is reserved and cannot be used as a field name. """ return pulumi.get(self, "name") diff --git a/sdk/python/pulumi_aws/config/outputs.py b/sdk/python/pulumi_aws/config/outputs.py index 00007f6a9a5..70bee8dc407 100644 --- a/sdk/python/pulumi_aws/config/outputs.py +++ b/sdk/python/pulumi_aws/config/outputs.py @@ -465,6 +465,7 @@ def __init__(__self__, *, redshiftdataapiservice: Optional[str] = None, redshiftserverless: Optional[str] = None, rekognition: Optional[str] = None, + resiliencehub: Optional[str] = None, resourceexplorer2: Optional[str] = None, resourcegroups: Optional[str] = None, resourcegroupstagging: Optional[str] = None, @@ -753,6 +754,7 @@ def __init__(__self__, *, :param str redshiftdataapiservice: Use this to override the default service endpoint URL :param str redshiftserverless: Use this to override the default service endpoint URL :param str rekognition: Use this to override the default service endpoint URL + :param str resiliencehub: Use this to override the default service endpoint URL :param str resourceexplorer2: Use this to override the default service endpoint URL :param str resourcegroups: Use this to override the default service endpoint URL :param str resourcegroupstagging: Use this to override the default service endpoint URL @@ -1264,6 +1266,8 @@ def __init__(__self__, *, pulumi.set(__self__, "redshiftserverless", redshiftserverless) if rekognition is not None: pulumi.set(__self__, "rekognition", rekognition) + if resiliencehub is not None: + pulumi.set(__self__, "resiliencehub", resiliencehub) if resourceexplorer2 is not None: pulumi.set(__self__, "resourceexplorer2", resourceexplorer2) if resourcegroups is not None: @@ -3177,6 +3181,14 @@ def rekognition(self) -> Optional[str]: """ return pulumi.get(self, "rekognition") + @property + @pulumi.getter + def resiliencehub(self) -> Optional[str]: + """ + Use this to override the default service endpoint URL + """ + return pulumi.get(self, "resiliencehub") + @property @pulumi.getter def resourceexplorer2(self) -> Optional[str]: diff --git a/sdk/python/pulumi_aws/datazone/__init__.py b/sdk/python/pulumi_aws/datazone/__init__.py index 89eb3591027..9b19de0f82c 100644 --- a/sdk/python/pulumi_aws/datazone/__init__.py +++ b/sdk/python/pulumi_aws/datazone/__init__.py @@ -8,6 +8,7 @@ from .domain import * from .environment_blueprint_configuration import * from .get_environment_blueprint import * +from .glossary import * from .project import * from ._inputs import * from . import outputs diff --git a/sdk/python/pulumi_aws/datazone/glossary.py b/sdk/python/pulumi_aws/datazone/glossary.py new file mode 100644 index 00000000000..abf5237a00e --- /dev/null +++ b/sdk/python/pulumi_aws/datazone/glossary.py @@ -0,0 +1,521 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities + +__all__ = ['GlossaryArgs', 'Glossary'] + +@pulumi.input_type +class GlossaryArgs: + def __init__(__self__, *, + domain_identifier: pulumi.Input[str], + owning_project_identifier: pulumi.Input[str], + description: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + status: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a Glossary resource. + :param pulumi.Input[str] owning_project_identifier: ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + + The following arguments are optional: + :param pulumi.Input[str] description: Description of the glossary. Must have a length between 0 and 4096. + :param pulumi.Input[str] name: Name of the glossary. Must have length between 1 and 256. + :param pulumi.Input[str] status: Status of business glossary. Valid values are DISABLED and ENABLED. + """ + pulumi.set(__self__, "domain_identifier", domain_identifier) + pulumi.set(__self__, "owning_project_identifier", owning_project_identifier) + if description is not None: + pulumi.set(__self__, "description", description) + if name is not None: + pulumi.set(__self__, "name", name) + if status is not None: + pulumi.set(__self__, "status", status) + + @property + @pulumi.getter(name="domainIdentifier") + def domain_identifier(self) -> pulumi.Input[str]: + return pulumi.get(self, "domain_identifier") + + @domain_identifier.setter + def domain_identifier(self, value: pulumi.Input[str]): + pulumi.set(self, "domain_identifier", value) + + @property + @pulumi.getter(name="owningProjectIdentifier") + def owning_project_identifier(self) -> pulumi.Input[str]: + """ + ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + + The following arguments are optional: + """ + return pulumi.get(self, "owning_project_identifier") + + @owning_project_identifier.setter + def owning_project_identifier(self, value: pulumi.Input[str]): + pulumi.set(self, "owning_project_identifier", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + Description of the glossary. Must have a length between 0 and 4096. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + Name of the glossary. Must have length between 1 and 256. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def status(self) -> Optional[pulumi.Input[str]]: + """ + Status of business glossary. Valid values are DISABLED and ENABLED. + """ + return pulumi.get(self, "status") + + @status.setter + def status(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "status", value) + + +@pulumi.input_type +class _GlossaryState: + def __init__(__self__, *, + description: Optional[pulumi.Input[str]] = None, + domain_identifier: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + owning_project_identifier: Optional[pulumi.Input[str]] = None, + status: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering Glossary resources. + :param pulumi.Input[str] description: Description of the glossary. Must have a length between 0 and 4096. + :param pulumi.Input[str] name: Name of the glossary. Must have length between 1 and 256. + :param pulumi.Input[str] owning_project_identifier: ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + + The following arguments are optional: + :param pulumi.Input[str] status: Status of business glossary. Valid values are DISABLED and ENABLED. + """ + if description is not None: + pulumi.set(__self__, "description", description) + if domain_identifier is not None: + pulumi.set(__self__, "domain_identifier", domain_identifier) + if name is not None: + pulumi.set(__self__, "name", name) + if owning_project_identifier is not None: + pulumi.set(__self__, "owning_project_identifier", owning_project_identifier) + if status is not None: + pulumi.set(__self__, "status", status) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + Description of the glossary. Must have a length between 0 and 4096. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="domainIdentifier") + def domain_identifier(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "domain_identifier") + + @domain_identifier.setter + def domain_identifier(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "domain_identifier", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + Name of the glossary. Must have length between 1 and 256. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="owningProjectIdentifier") + def owning_project_identifier(self) -> Optional[pulumi.Input[str]]: + """ + ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + + The following arguments are optional: + """ + return pulumi.get(self, "owning_project_identifier") + + @owning_project_identifier.setter + def owning_project_identifier(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "owning_project_identifier", value) + + @property + @pulumi.getter + def status(self) -> Optional[pulumi.Input[str]]: + """ + Status of business glossary. Valid values are DISABLED and ENABLED. + """ + return pulumi.get(self, "status") + + @status.setter + def status(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "status", value) + + +class Glossary(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + description: Optional[pulumi.Input[str]] = None, + domain_identifier: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + owning_project_identifier: Optional[pulumi.Input[str]] = None, + status: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Resource for managing an AWS DataZone Glossary. + + ## Example Usage + + ```python + import pulumi + import json + import pulumi_aws as aws + + domain_execution_role = aws.iam.Role("domain_execution_role", + name="example_name", + assume_role_policy=json.dumps({ + "Version": "2012-10-17", + "Statement": [ + { + "Action": [ + "sts:AssumeRole", + "sts:TagSession", + ], + "Effect": "Allow", + "Principal": { + "Service": "datazone.amazonaws.com", + }, + }, + { + "Action": [ + "sts:AssumeRole", + "sts:TagSession", + ], + "Effect": "Allow", + "Principal": { + "Service": "cloudformation.amazonaws.com", + }, + }, + ], + }), + inline_policies=[{ + "name": "example_name", + "policy": json.dumps({ + "version": "2012-10-17", + "statement": [{ + "action": [ + "datazone:*", + "ram:*", + "sso:*", + "kms:*", + ], + "effect": "Allow", + "resource": "*", + }], + }), + }]) + test = aws.datazone.Domain("test", + name="example_name", + domain_execution_role=domain_execution_role.arn) + test_security_group = aws.ec2.SecurityGroup("test", name="example_name") + test_project = aws.datazone.Project("test", + domain_identifier=test.id, + glossary_terms=["2N8w6XJCwZf"], + name="example_name", + description="desc", + skip_deletion_check=True) + test_glossary = aws.datazone.Glossary("test", + description="description", + name="example_name", + owning_project_identifier=test_project.id, + status="DISABLED", + domain_identifier=test_project.domain_identifier) + ``` + + ### Basic Usage + + ```python + import pulumi + import pulumi_aws as aws + + test = aws.datazone.Glossary("test", + description="description", + name="example_name", + owning_project_identifier=test_aws_datazone_project["id"], + status="DISABLED", + domain_identifier=test_aws_datazone_project["domainIdentifier"]) + ``` + + ## Import + + Using `pulumi import`, import DataZone Glossary using the import Datazone Glossary using a comma-delimited string combining the domain id, glossary id, and the id of the project it's under. For example: + + ```sh + $ pulumi import aws:datazone/glossary:Glossary example domain-id,glossary-id,owning-project-identifier + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] description: Description of the glossary. Must have a length between 0 and 4096. + :param pulumi.Input[str] name: Name of the glossary. Must have length between 1 and 256. + :param pulumi.Input[str] owning_project_identifier: ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + + The following arguments are optional: + :param pulumi.Input[str] status: Status of business glossary. Valid values are DISABLED and ENABLED. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: GlossaryArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Resource for managing an AWS DataZone Glossary. + + ## Example Usage + + ```python + import pulumi + import json + import pulumi_aws as aws + + domain_execution_role = aws.iam.Role("domain_execution_role", + name="example_name", + assume_role_policy=json.dumps({ + "Version": "2012-10-17", + "Statement": [ + { + "Action": [ + "sts:AssumeRole", + "sts:TagSession", + ], + "Effect": "Allow", + "Principal": { + "Service": "datazone.amazonaws.com", + }, + }, + { + "Action": [ + "sts:AssumeRole", + "sts:TagSession", + ], + "Effect": "Allow", + "Principal": { + "Service": "cloudformation.amazonaws.com", + }, + }, + ], + }), + inline_policies=[{ + "name": "example_name", + "policy": json.dumps({ + "version": "2012-10-17", + "statement": [{ + "action": [ + "datazone:*", + "ram:*", + "sso:*", + "kms:*", + ], + "effect": "Allow", + "resource": "*", + }], + }), + }]) + test = aws.datazone.Domain("test", + name="example_name", + domain_execution_role=domain_execution_role.arn) + test_security_group = aws.ec2.SecurityGroup("test", name="example_name") + test_project = aws.datazone.Project("test", + domain_identifier=test.id, + glossary_terms=["2N8w6XJCwZf"], + name="example_name", + description="desc", + skip_deletion_check=True) + test_glossary = aws.datazone.Glossary("test", + description="description", + name="example_name", + owning_project_identifier=test_project.id, + status="DISABLED", + domain_identifier=test_project.domain_identifier) + ``` + + ### Basic Usage + + ```python + import pulumi + import pulumi_aws as aws + + test = aws.datazone.Glossary("test", + description="description", + name="example_name", + owning_project_identifier=test_aws_datazone_project["id"], + status="DISABLED", + domain_identifier=test_aws_datazone_project["domainIdentifier"]) + ``` + + ## Import + + Using `pulumi import`, import DataZone Glossary using the import Datazone Glossary using a comma-delimited string combining the domain id, glossary id, and the id of the project it's under. For example: + + ```sh + $ pulumi import aws:datazone/glossary:Glossary example domain-id,glossary-id,owning-project-identifier + ``` + + :param str resource_name: The name of the resource. + :param GlossaryArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(GlossaryArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + description: Optional[pulumi.Input[str]] = None, + domain_identifier: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + owning_project_identifier: Optional[pulumi.Input[str]] = None, + status: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = GlossaryArgs.__new__(GlossaryArgs) + + __props__.__dict__["description"] = description + if domain_identifier is None and not opts.urn: + raise TypeError("Missing required property 'domain_identifier'") + __props__.__dict__["domain_identifier"] = domain_identifier + __props__.__dict__["name"] = name + if owning_project_identifier is None and not opts.urn: + raise TypeError("Missing required property 'owning_project_identifier'") + __props__.__dict__["owning_project_identifier"] = owning_project_identifier + __props__.__dict__["status"] = status + super(Glossary, __self__).__init__( + 'aws:datazone/glossary:Glossary', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + description: Optional[pulumi.Input[str]] = None, + domain_identifier: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + owning_project_identifier: Optional[pulumi.Input[str]] = None, + status: Optional[pulumi.Input[str]] = None) -> 'Glossary': + """ + Get an existing Glossary resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] description: Description of the glossary. Must have a length between 0 and 4096. + :param pulumi.Input[str] name: Name of the glossary. Must have length between 1 and 256. + :param pulumi.Input[str] owning_project_identifier: ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + + The following arguments are optional: + :param pulumi.Input[str] status: Status of business glossary. Valid values are DISABLED and ENABLED. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _GlossaryState.__new__(_GlossaryState) + + __props__.__dict__["description"] = description + __props__.__dict__["domain_identifier"] = domain_identifier + __props__.__dict__["name"] = name + __props__.__dict__["owning_project_identifier"] = owning_project_identifier + __props__.__dict__["status"] = status + return Glossary(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def description(self) -> pulumi.Output[Optional[str]]: + """ + Description of the glossary. Must have a length between 0 and 4096. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="domainIdentifier") + def domain_identifier(self) -> pulumi.Output[str]: + return pulumi.get(self, "domain_identifier") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + Name of the glossary. Must have length between 1 and 256. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="owningProjectIdentifier") + def owning_project_identifier(self) -> pulumi.Output[str]: + """ + ID of the project that owns business glossary. Must follow regex of ^[a-zA-Z0-9_-]{1,36}$. + + The following arguments are optional: + """ + return pulumi.get(self, "owning_project_identifier") + + @property + @pulumi.getter + def status(self) -> pulumi.Output[Optional[str]]: + """ + Status of business glossary. Valid values are DISABLED and ENABLED. + """ + return pulumi.get(self, "status") + diff --git a/sdk/python/pulumi_aws/ec2/_inputs.py b/sdk/python/pulumi_aws/ec2/_inputs.py index 0dd12c3026d..6dcbb804a52 100644 --- a/sdk/python/pulumi_aws/ec2/_inputs.py +++ b/sdk/python/pulumi_aws/ec2/_inputs.py @@ -5001,7 +5001,7 @@ def virtual_name(self, value: Optional[pulumi.Input[str]]): class InstanceInstanceMarketOptionsArgsDict(TypedDict): market_type: NotRequired[pulumi.Input[str]] """ - Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. """ spot_options: NotRequired[pulumi.Input['InstanceInstanceMarketOptionsSpotOptionsArgsDict']] """ @@ -5016,7 +5016,7 @@ def __init__(__self__, *, market_type: Optional[pulumi.Input[str]] = None, spot_options: Optional[pulumi.Input['InstanceInstanceMarketOptionsSpotOptionsArgs']] = None): """ - :param pulumi.Input[str] market_type: Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + :param pulumi.Input[str] market_type: Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. :param pulumi.Input['InstanceInstanceMarketOptionsSpotOptionsArgs'] spot_options: Block to configure the options for Spot Instances. See Spot Options below for details on attributes. """ if market_type is not None: @@ -5028,7 +5028,7 @@ def __init__(__self__, *, @pulumi.getter(name="marketType") def market_type(self) -> Optional[pulumi.Input[str]]: """ - Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. """ return pulumi.get(self, "market_type") diff --git a/sdk/python/pulumi_aws/ec2/outputs.py b/sdk/python/pulumi_aws/ec2/outputs.py index d7d2e1400c9..4e30e0295c8 100644 --- a/sdk/python/pulumi_aws/ec2/outputs.py +++ b/sdk/python/pulumi_aws/ec2/outputs.py @@ -3825,7 +3825,7 @@ def __init__(__self__, *, market_type: Optional[str] = None, spot_options: Optional['outputs.InstanceInstanceMarketOptionsSpotOptions'] = None): """ - :param str market_type: Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + :param str market_type: Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. :param 'InstanceInstanceMarketOptionsSpotOptionsArgs' spot_options: Block to configure the options for Spot Instances. See Spot Options below for details on attributes. """ if market_type is not None: @@ -3837,7 +3837,7 @@ def __init__(__self__, *, @pulumi.getter(name="marketType") def market_type(self) -> Optional[str]: """ - Type of market for the instance. Valid value is `spot`. Defaults to `spot`. Required if `spot_options` is specified. + Type of market for the instance. Valid values are `spot` and `capacity-block`. Defaults to `spot`. Required if `spot_options` is specified. """ return pulumi.get(self, "market_type") diff --git a/sdk/python/pulumi_aws/ec2/vpc.py b/sdk/python/pulumi_aws/ec2/vpc.py index ed634f93e58..38395d8f337 100644 --- a/sdk/python/pulumi_aws/ec2/vpc.py +++ b/sdk/python/pulumi_aws/ec2/vpc.py @@ -45,7 +45,7 @@ def __init__(__self__, *, :param pulumi.Input[str] ipv6_cidr_block: IPv6 CIDR block to request from an IPAM Pool. Can be set explicitly or derived from IPAM using `ipv6_netmask_length`. :param pulumi.Input[str] ipv6_cidr_block_network_border_group: By default when an IPv6 CIDR is assigned to a VPC a default ipv6_cidr_block_network_border_group will be set to the region of the VPC. This can be changed to restrict advertisement of public addresses to specific Network Border Groups such as LocalZones. :param pulumi.Input[str] ipv6_ipam_pool_id: IPAM Pool ID for a IPv6 pool. Conflicts with `assign_generated_ipv6_cidr_block`. - :param pulumi.Input[int] ipv6_netmask_length: Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + :param pulumi.Input[int] ipv6_netmask_length: Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. """ if assign_generated_ipv6_cidr_block is not None: @@ -211,7 +211,7 @@ def ipv6_ipam_pool_id(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="ipv6NetmaskLength") def ipv6_netmask_length(self) -> Optional[pulumi.Input[int]]: """ - Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. """ return pulumi.get(self, "ipv6_netmask_length") @@ -276,7 +276,7 @@ def __init__(__self__, *, :param pulumi.Input[str] ipv6_cidr_block: IPv6 CIDR block to request from an IPAM Pool. Can be set explicitly or derived from IPAM using `ipv6_netmask_length`. :param pulumi.Input[str] ipv6_cidr_block_network_border_group: By default when an IPv6 CIDR is assigned to a VPC a default ipv6_cidr_block_network_border_group will be set to the region of the VPC. This can be changed to restrict advertisement of public addresses to specific Network Border Groups such as LocalZones. :param pulumi.Input[str] ipv6_ipam_pool_id: IPAM Pool ID for a IPv6 pool. Conflicts with `assign_generated_ipv6_cidr_block`. - :param pulumi.Input[int] ipv6_netmask_length: Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + :param pulumi.Input[int] ipv6_netmask_length: Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. :param pulumi.Input[str] main_route_table_id: The ID of the main route table associated with this VPC. Note that you can change a VPC's main route table by using an `ec2.MainRouteTableAssociation`. @@ -540,7 +540,7 @@ def ipv6_ipam_pool_id(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="ipv6NetmaskLength") def ipv6_netmask_length(self) -> Optional[pulumi.Input[int]]: """ - Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. """ return pulumi.get(self, "ipv6_netmask_length") @@ -691,7 +691,7 @@ def __init__(__self__, :param pulumi.Input[str] ipv6_cidr_block: IPv6 CIDR block to request from an IPAM Pool. Can be set explicitly or derived from IPAM using `ipv6_netmask_length`. :param pulumi.Input[str] ipv6_cidr_block_network_border_group: By default when an IPv6 CIDR is assigned to a VPC a default ipv6_cidr_block_network_border_group will be set to the region of the VPC. This can be changed to restrict advertisement of public addresses to specific Network Border Groups such as LocalZones. :param pulumi.Input[str] ipv6_ipam_pool_id: IPAM Pool ID for a IPv6 pool. Conflicts with `assign_generated_ipv6_cidr_block`. - :param pulumi.Input[int] ipv6_netmask_length: Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + :param pulumi.Input[int] ipv6_netmask_length: Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. """ ... @@ -874,7 +874,7 @@ def get(resource_name: str, :param pulumi.Input[str] ipv6_cidr_block: IPv6 CIDR block to request from an IPAM Pool. Can be set explicitly or derived from IPAM using `ipv6_netmask_length`. :param pulumi.Input[str] ipv6_cidr_block_network_border_group: By default when an IPv6 CIDR is assigned to a VPC a default ipv6_cidr_block_network_border_group will be set to the region of the VPC. This can be changed to restrict advertisement of public addresses to specific Network Border Groups such as LocalZones. :param pulumi.Input[str] ipv6_ipam_pool_id: IPAM Pool ID for a IPv6 pool. Conflicts with `assign_generated_ipv6_cidr_block`. - :param pulumi.Input[int] ipv6_netmask_length: Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + :param pulumi.Input[int] ipv6_netmask_length: Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. :param pulumi.Input[str] main_route_table_id: The ID of the main route table associated with this VPC. Note that you can change a VPC's main route table by using an `ec2.MainRouteTableAssociation`. @@ -1050,7 +1050,7 @@ def ipv6_ipam_pool_id(self) -> pulumi.Output[Optional[str]]: @pulumi.getter(name="ipv6NetmaskLength") def ipv6_netmask_length(self) -> pulumi.Output[Optional[int]]: """ - Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`. + Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values are from `44` to `60` in increments of 4. """ return pulumi.get(self, "ipv6_netmask_length") diff --git a/sdk/python/pulumi_aws/ec2/vpc_ipam_pool_cidr_allocation.py b/sdk/python/pulumi_aws/ec2/vpc_ipam_pool_cidr_allocation.py index 66e50209822..a02545c1de3 100644 --- a/sdk/python/pulumi_aws/ec2/vpc_ipam_pool_cidr_allocation.py +++ b/sdk/python/pulumi_aws/ec2/vpc_ipam_pool_cidr_allocation.py @@ -525,7 +525,7 @@ def ipam_pool_id(self) -> pulumi.Output[str]: @property @pulumi.getter(name="netmaskLength") - def netmask_length(self) -> pulumi.Output[Optional[int]]: + def netmask_length(self) -> pulumi.Output[int]: """ The netmask length of the CIDR you would like to allocate to the IPAM pool. Valid Values: `0-128`. """ diff --git a/sdk/python/pulumi_aws/ec2/vpc_ipv6_cidr_block_association.py b/sdk/python/pulumi_aws/ec2/vpc_ipv6_cidr_block_association.py index 66a00beea73..88e9023fd3e 100644 --- a/sdk/python/pulumi_aws/ec2/vpc_ipv6_cidr_block_association.py +++ b/sdk/python/pulumi_aws/ec2/vpc_ipv6_cidr_block_association.py @@ -19,35 +19,32 @@ @pulumi.input_type class VpcIpv6CidrBlockAssociationArgs: def __init__(__self__, *, - ipv6_ipam_pool_id: pulumi.Input[str], vpc_id: pulumi.Input[str], + assign_generated_ipv6_cidr_block: Optional[pulumi.Input[bool]] = None, ipv6_cidr_block: Optional[pulumi.Input[str]] = None, - ipv6_netmask_length: Optional[pulumi.Input[int]] = None): + ipv6_ipam_pool_id: Optional[pulumi.Input[str]] = None, + ipv6_netmask_length: Optional[pulumi.Input[int]] = None, + ipv6_pool: Optional[pulumi.Input[str]] = None): """ The set of arguments for constructing a VpcIpv6CidrBlockAssociation resource. - :param pulumi.Input[str] ipv6_ipam_pool_id: The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. :param pulumi.Input[str] vpc_id: The ID of the VPC to make the association with. - :param pulumi.Input[str] ipv6_cidr_block: The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. - :param pulumi.Input[int] ipv6_netmask_length: The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + :param pulumi.Input[bool] assign_generated_ipv6_cidr_block: Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + :param pulumi.Input[str] ipv6_cidr_block: The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. + :param pulumi.Input[str] ipv6_ipam_pool_id: - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. + :param pulumi.Input[int] ipv6_netmask_length: The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. + :param pulumi.Input[str] ipv6_pool: The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. """ - pulumi.set(__self__, "ipv6_ipam_pool_id", ipv6_ipam_pool_id) pulumi.set(__self__, "vpc_id", vpc_id) + if assign_generated_ipv6_cidr_block is not None: + pulumi.set(__self__, "assign_generated_ipv6_cidr_block", assign_generated_ipv6_cidr_block) if ipv6_cidr_block is not None: pulumi.set(__self__, "ipv6_cidr_block", ipv6_cidr_block) + if ipv6_ipam_pool_id is not None: + pulumi.set(__self__, "ipv6_ipam_pool_id", ipv6_ipam_pool_id) if ipv6_netmask_length is not None: pulumi.set(__self__, "ipv6_netmask_length", ipv6_netmask_length) - - @property - @pulumi.getter(name="ipv6IpamPoolId") - def ipv6_ipam_pool_id(self) -> pulumi.Input[str]: - """ - The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. - """ - return pulumi.get(self, "ipv6_ipam_pool_id") - - @ipv6_ipam_pool_id.setter - def ipv6_ipam_pool_id(self, value: pulumi.Input[str]): - pulumi.set(self, "ipv6_ipam_pool_id", value) + if ipv6_pool is not None: + pulumi.set(__self__, "ipv6_pool", ipv6_pool) @property @pulumi.getter(name="vpcId") @@ -61,11 +58,23 @@ def vpc_id(self) -> pulumi.Input[str]: def vpc_id(self, value: pulumi.Input[str]): pulumi.set(self, "vpc_id", value) + @property + @pulumi.getter(name="assignGeneratedIpv6CidrBlock") + def assign_generated_ipv6_cidr_block(self) -> Optional[pulumi.Input[bool]]: + """ + Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + """ + return pulumi.get(self, "assign_generated_ipv6_cidr_block") + + @assign_generated_ipv6_cidr_block.setter + def assign_generated_ipv6_cidr_block(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "assign_generated_ipv6_cidr_block", value) + @property @pulumi.getter(name="ipv6CidrBlock") def ipv6_cidr_block(self) -> Optional[pulumi.Input[str]]: """ - The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. """ return pulumi.get(self, "ipv6_cidr_block") @@ -73,11 +82,23 @@ def ipv6_cidr_block(self) -> Optional[pulumi.Input[str]]: def ipv6_cidr_block(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "ipv6_cidr_block", value) + @property + @pulumi.getter(name="ipv6IpamPoolId") + def ipv6_ipam_pool_id(self) -> Optional[pulumi.Input[str]]: + """ + - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. + """ + return pulumi.get(self, "ipv6_ipam_pool_id") + + @ipv6_ipam_pool_id.setter + def ipv6_ipam_pool_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "ipv6_ipam_pool_id", value) + @property @pulumi.getter(name="ipv6NetmaskLength") def ipv6_netmask_length(self) -> Optional[pulumi.Input[int]]: """ - The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. """ return pulumi.get(self, "ipv6_netmask_length") @@ -85,35 +106,67 @@ def ipv6_netmask_length(self) -> Optional[pulumi.Input[int]]: def ipv6_netmask_length(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "ipv6_netmask_length", value) + @property + @pulumi.getter(name="ipv6Pool") + def ipv6_pool(self) -> Optional[pulumi.Input[str]]: + """ + The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + """ + return pulumi.get(self, "ipv6_pool") + + @ipv6_pool.setter + def ipv6_pool(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "ipv6_pool", value) + @pulumi.input_type class _VpcIpv6CidrBlockAssociationState: def __init__(__self__, *, + assign_generated_ipv6_cidr_block: Optional[pulumi.Input[bool]] = None, ipv6_cidr_block: Optional[pulumi.Input[str]] = None, ipv6_ipam_pool_id: Optional[pulumi.Input[str]] = None, ipv6_netmask_length: Optional[pulumi.Input[int]] = None, + ipv6_pool: Optional[pulumi.Input[str]] = None, vpc_id: Optional[pulumi.Input[str]] = None): """ Input properties used for looking up and filtering VpcIpv6CidrBlockAssociation resources. - :param pulumi.Input[str] ipv6_cidr_block: The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. - :param pulumi.Input[str] ipv6_ipam_pool_id: The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. - :param pulumi.Input[int] ipv6_netmask_length: The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + :param pulumi.Input[bool] assign_generated_ipv6_cidr_block: Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + :param pulumi.Input[str] ipv6_cidr_block: The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. + :param pulumi.Input[str] ipv6_ipam_pool_id: - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. + :param pulumi.Input[int] ipv6_netmask_length: The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. + :param pulumi.Input[str] ipv6_pool: The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. :param pulumi.Input[str] vpc_id: The ID of the VPC to make the association with. """ + if assign_generated_ipv6_cidr_block is not None: + pulumi.set(__self__, "assign_generated_ipv6_cidr_block", assign_generated_ipv6_cidr_block) if ipv6_cidr_block is not None: pulumi.set(__self__, "ipv6_cidr_block", ipv6_cidr_block) if ipv6_ipam_pool_id is not None: pulumi.set(__self__, "ipv6_ipam_pool_id", ipv6_ipam_pool_id) if ipv6_netmask_length is not None: pulumi.set(__self__, "ipv6_netmask_length", ipv6_netmask_length) + if ipv6_pool is not None: + pulumi.set(__self__, "ipv6_pool", ipv6_pool) if vpc_id is not None: pulumi.set(__self__, "vpc_id", vpc_id) + @property + @pulumi.getter(name="assignGeneratedIpv6CidrBlock") + def assign_generated_ipv6_cidr_block(self) -> Optional[pulumi.Input[bool]]: + """ + Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + """ + return pulumi.get(self, "assign_generated_ipv6_cidr_block") + + @assign_generated_ipv6_cidr_block.setter + def assign_generated_ipv6_cidr_block(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "assign_generated_ipv6_cidr_block", value) + @property @pulumi.getter(name="ipv6CidrBlock") def ipv6_cidr_block(self) -> Optional[pulumi.Input[str]]: """ - The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. """ return pulumi.get(self, "ipv6_cidr_block") @@ -125,7 +178,7 @@ def ipv6_cidr_block(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="ipv6IpamPoolId") def ipv6_ipam_pool_id(self) -> Optional[pulumi.Input[str]]: """ - The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. """ return pulumi.get(self, "ipv6_ipam_pool_id") @@ -137,7 +190,7 @@ def ipv6_ipam_pool_id(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="ipv6NetmaskLength") def ipv6_netmask_length(self) -> Optional[pulumi.Input[int]]: """ - The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. """ return pulumi.get(self, "ipv6_netmask_length") @@ -145,6 +198,18 @@ def ipv6_netmask_length(self) -> Optional[pulumi.Input[int]]: def ipv6_netmask_length(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "ipv6_netmask_length", value) + @property + @pulumi.getter(name="ipv6Pool") + def ipv6_pool(self) -> Optional[pulumi.Input[str]]: + """ + The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + """ + return pulumi.get(self, "ipv6_pool") + + @ipv6_pool.setter + def ipv6_pool(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "ipv6_pool", value) + @property @pulumi.getter(name="vpcId") def vpc_id(self) -> Optional[pulumi.Input[str]]: @@ -163,9 +228,11 @@ class VpcIpv6CidrBlockAssociation(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, + assign_generated_ipv6_cidr_block: Optional[pulumi.Input[bool]] = None, ipv6_cidr_block: Optional[pulumi.Input[str]] = None, ipv6_ipam_pool_id: Optional[pulumi.Input[str]] = None, ipv6_netmask_length: Optional[pulumi.Input[int]] = None, + ipv6_pool: Optional[pulumi.Input[str]] = None, vpc_id: Optional[pulumi.Input[str]] = None, __props__=None): """ @@ -195,9 +262,11 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. - :param pulumi.Input[str] ipv6_cidr_block: The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. - :param pulumi.Input[str] ipv6_ipam_pool_id: The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. - :param pulumi.Input[int] ipv6_netmask_length: The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + :param pulumi.Input[bool] assign_generated_ipv6_cidr_block: Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + :param pulumi.Input[str] ipv6_cidr_block: The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. + :param pulumi.Input[str] ipv6_ipam_pool_id: - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. + :param pulumi.Input[int] ipv6_netmask_length: The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. + :param pulumi.Input[str] ipv6_pool: The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. :param pulumi.Input[str] vpc_id: The ID of the VPC to make the association with. """ ... @@ -246,9 +315,11 @@ def __init__(__self__, resource_name: str, *args, **kwargs): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, + assign_generated_ipv6_cidr_block: Optional[pulumi.Input[bool]] = None, ipv6_cidr_block: Optional[pulumi.Input[str]] = None, ipv6_ipam_pool_id: Optional[pulumi.Input[str]] = None, ipv6_netmask_length: Optional[pulumi.Input[int]] = None, + ipv6_pool: Optional[pulumi.Input[str]] = None, vpc_id: Optional[pulumi.Input[str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) @@ -259,11 +330,11 @@ def _internal_init(__self__, raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') __props__ = VpcIpv6CidrBlockAssociationArgs.__new__(VpcIpv6CidrBlockAssociationArgs) + __props__.__dict__["assign_generated_ipv6_cidr_block"] = assign_generated_ipv6_cidr_block __props__.__dict__["ipv6_cidr_block"] = ipv6_cidr_block - if ipv6_ipam_pool_id is None and not opts.urn: - raise TypeError("Missing required property 'ipv6_ipam_pool_id'") __props__.__dict__["ipv6_ipam_pool_id"] = ipv6_ipam_pool_id __props__.__dict__["ipv6_netmask_length"] = ipv6_netmask_length + __props__.__dict__["ipv6_pool"] = ipv6_pool if vpc_id is None and not opts.urn: raise TypeError("Missing required property 'vpc_id'") __props__.__dict__["vpc_id"] = vpc_id @@ -277,9 +348,11 @@ def _internal_init(__self__, def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, + assign_generated_ipv6_cidr_block: Optional[pulumi.Input[bool]] = None, ipv6_cidr_block: Optional[pulumi.Input[str]] = None, ipv6_ipam_pool_id: Optional[pulumi.Input[str]] = None, ipv6_netmask_length: Optional[pulumi.Input[int]] = None, + ipv6_pool: Optional[pulumi.Input[str]] = None, vpc_id: Optional[pulumi.Input[str]] = None) -> 'VpcIpv6CidrBlockAssociation': """ Get an existing VpcIpv6CidrBlockAssociation resource's state with the given name, id, and optional extra @@ -288,34 +361,46 @@ def get(resource_name: str, :param str resource_name: The unique name of the resulting resource. :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. - :param pulumi.Input[str] ipv6_cidr_block: The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. - :param pulumi.Input[str] ipv6_ipam_pool_id: The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. - :param pulumi.Input[int] ipv6_netmask_length: The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + :param pulumi.Input[bool] assign_generated_ipv6_cidr_block: Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + :param pulumi.Input[str] ipv6_cidr_block: The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. + :param pulumi.Input[str] ipv6_ipam_pool_id: - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. + :param pulumi.Input[int] ipv6_netmask_length: The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. + :param pulumi.Input[str] ipv6_pool: The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. :param pulumi.Input[str] vpc_id: The ID of the VPC to make the association with. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) __props__ = _VpcIpv6CidrBlockAssociationState.__new__(_VpcIpv6CidrBlockAssociationState) + __props__.__dict__["assign_generated_ipv6_cidr_block"] = assign_generated_ipv6_cidr_block __props__.__dict__["ipv6_cidr_block"] = ipv6_cidr_block __props__.__dict__["ipv6_ipam_pool_id"] = ipv6_ipam_pool_id __props__.__dict__["ipv6_netmask_length"] = ipv6_netmask_length + __props__.__dict__["ipv6_pool"] = ipv6_pool __props__.__dict__["vpc_id"] = vpc_id return VpcIpv6CidrBlockAssociation(resource_name, opts=opts, __props__=__props__) + @property + @pulumi.getter(name="assignGeneratedIpv6CidrBlock") + def assign_generated_ipv6_cidr_block(self) -> pulumi.Output[bool]: + """ + Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block. Default is `false`. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`, `ipv6_cidr_block` and `ipv6_netmask_length`. + """ + return pulumi.get(self, "assign_generated_ipv6_cidr_block") + @property @pulumi.getter(name="ipv6CidrBlock") def ipv6_cidr_block(self) -> pulumi.Output[str]: """ - The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. + The IPv6 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv6_netmask_length`. This parameter is required if `ipv6_netmask_length` is not set and the IPAM pool does not have `allocation_default_netmask` set. Conflicts with `assign_generated_ipv6_cidr_block`. """ return pulumi.get(self, "ipv6_cidr_block") @property @pulumi.getter(name="ipv6IpamPoolId") - def ipv6_ipam_pool_id(self) -> pulumi.Output[str]: + def ipv6_ipam_pool_id(self) -> pulumi.Output[Optional[str]]: """ - The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. + - (Optional) The ID of an IPv6 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Conflict with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. """ return pulumi.get(self, "ipv6_ipam_pool_id") @@ -323,10 +408,18 @@ def ipv6_ipam_pool_id(self) -> pulumi.Output[str]: @pulumi.getter(name="ipv6NetmaskLength") def ipv6_netmask_length(self) -> pulumi.Output[Optional[int]]: """ - The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `cidr_block` are required + The netmask length of the IPv6 CIDR you want to allocate to this VPC. Requires specifying a `ipv6_ipam_pool_id`. This parameter is optional if the IPAM pool has `allocation_default_netmask` set, otherwise it or `ipv6_cidr_block` are required. Conflicts with `assign_generated_ipv6_cidr_block` and `ipv6_ipam_pool_id`. """ return pulumi.get(self, "ipv6_netmask_length") + @property + @pulumi.getter(name="ipv6Pool") + def ipv6_pool(self) -> pulumi.Output[str]: + """ + The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block. Conflicts with `ipv6_pam_pool_id`, `ipv6_pool`. + """ + return pulumi.get(self, "ipv6_pool") + @property @pulumi.getter(name="vpcId") def vpc_id(self) -> pulumi.Output[str]: diff --git a/sdk/python/pulumi_aws/ecr/__init__.py b/sdk/python/pulumi_aws/ecr/__init__.py index 7046b688639..a0d84b86d19 100644 --- a/sdk/python/pulumi_aws/ecr/__init__.py +++ b/sdk/python/pulumi_aws/ecr/__init__.py @@ -12,12 +12,14 @@ from .get_pull_through_cache_rule import * from .get_repositories import * from .get_repository import * +from .get_repository_creation_template import * from .lifecycle_policy import * from .pull_through_cache_rule import * from .registry_policy import * from .registry_scanning_configuration import * from .replication_configuration import * from .repository import * +from .repository_creation_template import * from .repository_policy import * from ._inputs import * from . import outputs diff --git a/sdk/python/pulumi_aws/ecr/_inputs.py b/sdk/python/pulumi_aws/ecr/_inputs.py index 7202e2258d8..4e590cb7ee1 100644 --- a/sdk/python/pulumi_aws/ecr/_inputs.py +++ b/sdk/python/pulumi_aws/ecr/_inputs.py @@ -27,6 +27,8 @@ 'ReplicationConfigurationReplicationConfigurationRuleDestinationArgsDict', 'ReplicationConfigurationReplicationConfigurationRuleRepositoryFilterArgs', 'ReplicationConfigurationReplicationConfigurationRuleRepositoryFilterArgsDict', + 'RepositoryCreationTemplateEncryptionConfigurationArgs', + 'RepositoryCreationTemplateEncryptionConfigurationArgsDict', 'RepositoryEncryptionConfigurationArgs', 'RepositoryEncryptionConfigurationArgsDict', 'RepositoryImageScanningConfigurationArgs', @@ -307,6 +309,58 @@ def filter_type(self, value: pulumi.Input[str]): pulumi.set(self, "filter_type", value) +if not MYPY: + class RepositoryCreationTemplateEncryptionConfigurationArgsDict(TypedDict): + encryption_type: NotRequired[pulumi.Input[str]] + """ + The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + """ + kms_key: NotRequired[pulumi.Input[str]] + """ + The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + """ +elif False: + RepositoryCreationTemplateEncryptionConfigurationArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class RepositoryCreationTemplateEncryptionConfigurationArgs: + def __init__(__self__, *, + encryption_type: Optional[pulumi.Input[str]] = None, + kms_key: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] encryption_type: The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + :param pulumi.Input[str] kms_key: The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + """ + if encryption_type is not None: + pulumi.set(__self__, "encryption_type", encryption_type) + if kms_key is not None: + pulumi.set(__self__, "kms_key", kms_key) + + @property + @pulumi.getter(name="encryptionType") + def encryption_type(self) -> Optional[pulumi.Input[str]]: + """ + The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + """ + return pulumi.get(self, "encryption_type") + + @encryption_type.setter + def encryption_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "encryption_type", value) + + @property + @pulumi.getter(name="kmsKey") + def kms_key(self) -> Optional[pulumi.Input[str]]: + """ + The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + """ + return pulumi.get(self, "kms_key") + + @kms_key.setter + def kms_key(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "kms_key", value) + + if not MYPY: class RepositoryEncryptionConfigurationArgsDict(TypedDict): encryption_type: NotRequired[pulumi.Input[str]] diff --git a/sdk/python/pulumi_aws/ecr/get_repository_creation_template.py b/sdk/python/pulumi_aws/ecr/get_repository_creation_template.py new file mode 100644 index 00000000000..82094cc15ea --- /dev/null +++ b/sdk/python/pulumi_aws/ecr/get_repository_creation_template.py @@ -0,0 +1,229 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities +from . import outputs + +__all__ = [ + 'GetRepositoryCreationTemplateResult', + 'AwaitableGetRepositoryCreationTemplateResult', + 'get_repository_creation_template', + 'get_repository_creation_template_output', +] + +@pulumi.output_type +class GetRepositoryCreationTemplateResult: + """ + A collection of values returned by getRepositoryCreationTemplate. + """ + def __init__(__self__, applied_fors=None, custom_role_arn=None, description=None, encryption_configurations=None, id=None, image_tag_mutability=None, lifecycle_policy=None, prefix=None, registry_id=None, repository_policy=None, resource_tags=None): + if applied_fors and not isinstance(applied_fors, list): + raise TypeError("Expected argument 'applied_fors' to be a list") + pulumi.set(__self__, "applied_fors", applied_fors) + if custom_role_arn and not isinstance(custom_role_arn, str): + raise TypeError("Expected argument 'custom_role_arn' to be a str") + pulumi.set(__self__, "custom_role_arn", custom_role_arn) + if description and not isinstance(description, str): + raise TypeError("Expected argument 'description' to be a str") + pulumi.set(__self__, "description", description) + if encryption_configurations and not isinstance(encryption_configurations, list): + raise TypeError("Expected argument 'encryption_configurations' to be a list") + pulumi.set(__self__, "encryption_configurations", encryption_configurations) + if id and not isinstance(id, str): + raise TypeError("Expected argument 'id' to be a str") + pulumi.set(__self__, "id", id) + if image_tag_mutability and not isinstance(image_tag_mutability, str): + raise TypeError("Expected argument 'image_tag_mutability' to be a str") + pulumi.set(__self__, "image_tag_mutability", image_tag_mutability) + if lifecycle_policy and not isinstance(lifecycle_policy, str): + raise TypeError("Expected argument 'lifecycle_policy' to be a str") + pulumi.set(__self__, "lifecycle_policy", lifecycle_policy) + if prefix and not isinstance(prefix, str): + raise TypeError("Expected argument 'prefix' to be a str") + pulumi.set(__self__, "prefix", prefix) + if registry_id and not isinstance(registry_id, str): + raise TypeError("Expected argument 'registry_id' to be a str") + pulumi.set(__self__, "registry_id", registry_id) + if repository_policy and not isinstance(repository_policy, str): + raise TypeError("Expected argument 'repository_policy' to be a str") + pulumi.set(__self__, "repository_policy", repository_policy) + if resource_tags and not isinstance(resource_tags, dict): + raise TypeError("Expected argument 'resource_tags' to be a dict") + pulumi.set(__self__, "resource_tags", resource_tags) + + @property + @pulumi.getter(name="appliedFors") + def applied_fors(self) -> Sequence[str]: + """ + Which features this template applies to. Contains one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + """ + return pulumi.get(self, "applied_fors") + + @property + @pulumi.getter(name="customRoleArn") + def custom_role_arn(self) -> str: + """ + The ARN of the custom role used for repository creation. + """ + return pulumi.get(self, "custom_role_arn") + + @property + @pulumi.getter + def description(self) -> str: + """ + The description for this template. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="encryptionConfigurations") + def encryption_configurations(self) -> Sequence['outputs.GetRepositoryCreationTemplateEncryptionConfigurationResult']: + """ + Encryption configuration for any created repositories. See Encryption Configuration below. + """ + return pulumi.get(self, "encryption_configurations") + + @property + @pulumi.getter + def id(self) -> str: + """ + The provider-assigned unique ID for this managed resource. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="imageTagMutability") + def image_tag_mutability(self) -> str: + """ + The tag mutability setting for any created repositories. + """ + return pulumi.get(self, "image_tag_mutability") + + @property + @pulumi.getter(name="lifecyclePolicy") + def lifecycle_policy(self) -> str: + """ + The lifecycle policy document to apply to any created repositories. + """ + return pulumi.get(self, "lifecycle_policy") + + @property + @pulumi.getter + def prefix(self) -> str: + return pulumi.get(self, "prefix") + + @property + @pulumi.getter(name="registryId") + def registry_id(self) -> str: + """ + The registry ID the repository creation template applies to. + """ + return pulumi.get(self, "registry_id") + + @property + @pulumi.getter(name="repositoryPolicy") + def repository_policy(self) -> str: + """ + The registry policy document to apply to any created repositories. + """ + return pulumi.get(self, "repository_policy") + + @property + @pulumi.getter(name="resourceTags") + def resource_tags(self) -> Mapping[str, str]: + """ + A map of tags to assign to any created repositories. + """ + return pulumi.get(self, "resource_tags") + + +class AwaitableGetRepositoryCreationTemplateResult(GetRepositoryCreationTemplateResult): + # pylint: disable=using-constant-test + def __await__(self): + if False: + yield self + return GetRepositoryCreationTemplateResult( + applied_fors=self.applied_fors, + custom_role_arn=self.custom_role_arn, + description=self.description, + encryption_configurations=self.encryption_configurations, + id=self.id, + image_tag_mutability=self.image_tag_mutability, + lifecycle_policy=self.lifecycle_policy, + prefix=self.prefix, + registry_id=self.registry_id, + repository_policy=self.repository_policy, + resource_tags=self.resource_tags) + + +def get_repository_creation_template(prefix: Optional[str] = None, + resource_tags: Optional[Mapping[str, str]] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetRepositoryCreationTemplateResult: + """ + The ECR Repository Creation Template data source allows the template details to be retrieved for a Repository Creation Template. + + ## Example Usage + + ```python + import pulumi + import pulumi_aws as aws + + example = aws.ecr.get_repository_creation_template(prefix="example") + ``` + + + :param str prefix: The repository name prefix that the template matches against. + :param Mapping[str, str] resource_tags: A map of tags to assign to any created repositories. + """ + __args__ = dict() + __args__['prefix'] = prefix + __args__['resourceTags'] = resource_tags + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke('aws:ecr/getRepositoryCreationTemplate:getRepositoryCreationTemplate', __args__, opts=opts, typ=GetRepositoryCreationTemplateResult).value + + return AwaitableGetRepositoryCreationTemplateResult( + applied_fors=pulumi.get(__ret__, 'applied_fors'), + custom_role_arn=pulumi.get(__ret__, 'custom_role_arn'), + description=pulumi.get(__ret__, 'description'), + encryption_configurations=pulumi.get(__ret__, 'encryption_configurations'), + id=pulumi.get(__ret__, 'id'), + image_tag_mutability=pulumi.get(__ret__, 'image_tag_mutability'), + lifecycle_policy=pulumi.get(__ret__, 'lifecycle_policy'), + prefix=pulumi.get(__ret__, 'prefix'), + registry_id=pulumi.get(__ret__, 'registry_id'), + repository_policy=pulumi.get(__ret__, 'repository_policy'), + resource_tags=pulumi.get(__ret__, 'resource_tags')) + + +@_utilities.lift_output_func(get_repository_creation_template) +def get_repository_creation_template_output(prefix: Optional[pulumi.Input[str]] = None, + resource_tags: Optional[pulumi.Input[Optional[Mapping[str, str]]]] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetRepositoryCreationTemplateResult]: + """ + The ECR Repository Creation Template data source allows the template details to be retrieved for a Repository Creation Template. + + ## Example Usage + + ```python + import pulumi + import pulumi_aws as aws + + example = aws.ecr.get_repository_creation_template(prefix="example") + ``` + + + :param str prefix: The repository name prefix that the template matches against. + :param Mapping[str, str] resource_tags: A map of tags to assign to any created repositories. + """ + ... diff --git a/sdk/python/pulumi_aws/ecr/outputs.py b/sdk/python/pulumi_aws/ecr/outputs.py index fc26fb37160..a479b79c162 100644 --- a/sdk/python/pulumi_aws/ecr/outputs.py +++ b/sdk/python/pulumi_aws/ecr/outputs.py @@ -22,11 +22,13 @@ 'ReplicationConfigurationReplicationConfigurationRule', 'ReplicationConfigurationReplicationConfigurationRuleDestination', 'ReplicationConfigurationReplicationConfigurationRuleRepositoryFilter', + 'RepositoryCreationTemplateEncryptionConfiguration', 'RepositoryEncryptionConfiguration', 'RepositoryImageScanningConfiguration', 'GetLifecyclePolicyDocumentRuleResult', 'GetLifecyclePolicyDocumentRuleActionResult', 'GetLifecyclePolicyDocumentRuleSelectionResult', + 'GetRepositoryCreationTemplateEncryptionConfigurationResult', 'GetRepositoryEncryptionConfigurationResult', 'GetRepositoryImageScanningConfigurationResult', ] @@ -272,6 +274,56 @@ def filter_type(self) -> str: return pulumi.get(self, "filter_type") +@pulumi.output_type +class RepositoryCreationTemplateEncryptionConfiguration(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "encryptionType": + suggest = "encryption_type" + elif key == "kmsKey": + suggest = "kms_key" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in RepositoryCreationTemplateEncryptionConfiguration. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + RepositoryCreationTemplateEncryptionConfiguration.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + RepositoryCreationTemplateEncryptionConfiguration.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + encryption_type: Optional[str] = None, + kms_key: Optional[str] = None): + """ + :param str encryption_type: The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + :param str kms_key: The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + """ + if encryption_type is not None: + pulumi.set(__self__, "encryption_type", encryption_type) + if kms_key is not None: + pulumi.set(__self__, "kms_key", kms_key) + + @property + @pulumi.getter(name="encryptionType") + def encryption_type(self) -> Optional[str]: + """ + The encryption type to use for any created repositories. Valid values are `AES256` or `KMS`. Defaults to `AES256`. + """ + return pulumi.get(self, "encryption_type") + + @property + @pulumi.getter(name="kmsKey") + def kms_key(self) -> Optional[str]: + """ + The ARN of the KMS key to use when `encryption_type` is `KMS`. If not specified, uses the default AWS managed key for ECR. + """ + return pulumi.get(self, "kms_key") + + @pulumi.output_type class RepositoryEncryptionConfiguration(dict): @staticmethod @@ -505,6 +557,35 @@ def tag_prefix_lists(self) -> Optional[Sequence[str]]: return pulumi.get(self, "tag_prefix_lists") +@pulumi.output_type +class GetRepositoryCreationTemplateEncryptionConfigurationResult(dict): + def __init__(__self__, *, + encryption_type: str, + kms_key: str): + """ + :param str encryption_type: Encryption type to use for any created repositories, either `AES256` or `KMS`. + :param str kms_key: If `encryption_type` is `KMS`, the ARN of the KMS key used. + """ + pulumi.set(__self__, "encryption_type", encryption_type) + pulumi.set(__self__, "kms_key", kms_key) + + @property + @pulumi.getter(name="encryptionType") + def encryption_type(self) -> str: + """ + Encryption type to use for any created repositories, either `AES256` or `KMS`. + """ + return pulumi.get(self, "encryption_type") + + @property + @pulumi.getter(name="kmsKey") + def kms_key(self) -> str: + """ + If `encryption_type` is `KMS`, the ARN of the KMS key used. + """ + return pulumi.get(self, "kms_key") + + @pulumi.output_type class GetRepositoryEncryptionConfigurationResult(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_aws/ecr/repository_creation_template.py b/sdk/python/pulumi_aws/ecr/repository_creation_template.py new file mode 100644 index 00000000000..ecbee577e5d --- /dev/null +++ b/sdk/python/pulumi_aws/ecr/repository_creation_template.py @@ -0,0 +1,687 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['RepositoryCreationTemplateArgs', 'RepositoryCreationTemplate'] + +@pulumi.input_type +class RepositoryCreationTemplateArgs: + def __init__(__self__, *, + applied_fors: pulumi.Input[Sequence[pulumi.Input[str]]], + prefix: pulumi.Input[str], + custom_role_arn: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + encryption_configurations: Optional[pulumi.Input[Sequence[pulumi.Input['RepositoryCreationTemplateEncryptionConfigurationArgs']]]] = None, + image_tag_mutability: Optional[pulumi.Input[str]] = None, + lifecycle_policy: Optional[pulumi.Input[str]] = None, + repository_policy: Optional[pulumi.Input[str]] = None, + resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None): + """ + The set of arguments for constructing a RepositoryCreationTemplate resource. + :param pulumi.Input[Sequence[pulumi.Input[str]]] applied_fors: Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + :param pulumi.Input[str] prefix: The repository name prefix to match against. + :param pulumi.Input[str] custom_role_arn: A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + :param pulumi.Input[str] description: The description for this template. + :param pulumi.Input[Sequence[pulumi.Input['RepositoryCreationTemplateEncryptionConfigurationArgs']]] encryption_configurations: Encryption configuration for any created repositories. See below for schema. + :param pulumi.Input[str] image_tag_mutability: The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + :param pulumi.Input[str] lifecycle_policy: The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `ecr_get_lifecycle_policy_document` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_tags: A map of tags to assign to any created repositories. + """ + pulumi.set(__self__, "applied_fors", applied_fors) + pulumi.set(__self__, "prefix", prefix) + if custom_role_arn is not None: + pulumi.set(__self__, "custom_role_arn", custom_role_arn) + if description is not None: + pulumi.set(__self__, "description", description) + if encryption_configurations is not None: + pulumi.set(__self__, "encryption_configurations", encryption_configurations) + if image_tag_mutability is not None: + pulumi.set(__self__, "image_tag_mutability", image_tag_mutability) + if lifecycle_policy is not None: + pulumi.set(__self__, "lifecycle_policy", lifecycle_policy) + if repository_policy is not None: + pulumi.set(__self__, "repository_policy", repository_policy) + if resource_tags is not None: + pulumi.set(__self__, "resource_tags", resource_tags) + + @property + @pulumi.getter(name="appliedFors") + def applied_fors(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]: + """ + Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + """ + return pulumi.get(self, "applied_fors") + + @applied_fors.setter + def applied_fors(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]): + pulumi.set(self, "applied_fors", value) + + @property + @pulumi.getter + def prefix(self) -> pulumi.Input[str]: + """ + The repository name prefix to match against. + """ + return pulumi.get(self, "prefix") + + @prefix.setter + def prefix(self, value: pulumi.Input[str]): + pulumi.set(self, "prefix", value) + + @property + @pulumi.getter(name="customRoleArn") + def custom_role_arn(self) -> Optional[pulumi.Input[str]]: + """ + A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + """ + return pulumi.get(self, "custom_role_arn") + + @custom_role_arn.setter + def custom_role_arn(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "custom_role_arn", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + The description for this template. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="encryptionConfigurations") + def encryption_configurations(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RepositoryCreationTemplateEncryptionConfigurationArgs']]]]: + """ + Encryption configuration for any created repositories. See below for schema. + """ + return pulumi.get(self, "encryption_configurations") + + @encryption_configurations.setter + def encryption_configurations(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RepositoryCreationTemplateEncryptionConfigurationArgs']]]]): + pulumi.set(self, "encryption_configurations", value) + + @property + @pulumi.getter(name="imageTagMutability") + def image_tag_mutability(self) -> Optional[pulumi.Input[str]]: + """ + The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + """ + return pulumi.get(self, "image_tag_mutability") + + @image_tag_mutability.setter + def image_tag_mutability(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "image_tag_mutability", value) + + @property + @pulumi.getter(name="lifecyclePolicy") + def lifecycle_policy(self) -> Optional[pulumi.Input[str]]: + """ + The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `ecr_get_lifecycle_policy_document` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + """ + return pulumi.get(self, "lifecycle_policy") + + @lifecycle_policy.setter + def lifecycle_policy(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "lifecycle_policy", value) + + @property + @pulumi.getter(name="repositoryPolicy") + def repository_policy(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "repository_policy") + + @repository_policy.setter + def repository_policy(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "repository_policy", value) + + @property + @pulumi.getter(name="resourceTags") + def resource_tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + A map of tags to assign to any created repositories. + """ + return pulumi.get(self, "resource_tags") + + @resource_tags.setter + def resource_tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "resource_tags", value) + + +@pulumi.input_type +class _RepositoryCreationTemplateState: + def __init__(__self__, *, + applied_fors: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + custom_role_arn: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + encryption_configurations: Optional[pulumi.Input[Sequence[pulumi.Input['RepositoryCreationTemplateEncryptionConfigurationArgs']]]] = None, + image_tag_mutability: Optional[pulumi.Input[str]] = None, + lifecycle_policy: Optional[pulumi.Input[str]] = None, + prefix: Optional[pulumi.Input[str]] = None, + registry_id: Optional[pulumi.Input[str]] = None, + repository_policy: Optional[pulumi.Input[str]] = None, + resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None): + """ + Input properties used for looking up and filtering RepositoryCreationTemplate resources. + :param pulumi.Input[Sequence[pulumi.Input[str]]] applied_fors: Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + :param pulumi.Input[str] custom_role_arn: A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + :param pulumi.Input[str] description: The description for this template. + :param pulumi.Input[Sequence[pulumi.Input['RepositoryCreationTemplateEncryptionConfigurationArgs']]] encryption_configurations: Encryption configuration for any created repositories. See below for schema. + :param pulumi.Input[str] image_tag_mutability: The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + :param pulumi.Input[str] lifecycle_policy: The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `ecr_get_lifecycle_policy_document` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + :param pulumi.Input[str] prefix: The repository name prefix to match against. + :param pulumi.Input[str] registry_id: The registry ID the repository creation template applies to. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_tags: A map of tags to assign to any created repositories. + """ + if applied_fors is not None: + pulumi.set(__self__, "applied_fors", applied_fors) + if custom_role_arn is not None: + pulumi.set(__self__, "custom_role_arn", custom_role_arn) + if description is not None: + pulumi.set(__self__, "description", description) + if encryption_configurations is not None: + pulumi.set(__self__, "encryption_configurations", encryption_configurations) + if image_tag_mutability is not None: + pulumi.set(__self__, "image_tag_mutability", image_tag_mutability) + if lifecycle_policy is not None: + pulumi.set(__self__, "lifecycle_policy", lifecycle_policy) + if prefix is not None: + pulumi.set(__self__, "prefix", prefix) + if registry_id is not None: + pulumi.set(__self__, "registry_id", registry_id) + if repository_policy is not None: + pulumi.set(__self__, "repository_policy", repository_policy) + if resource_tags is not None: + pulumi.set(__self__, "resource_tags", resource_tags) + + @property + @pulumi.getter(name="appliedFors") + def applied_fors(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + """ + return pulumi.get(self, "applied_fors") + + @applied_fors.setter + def applied_fors(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "applied_fors", value) + + @property + @pulumi.getter(name="customRoleArn") + def custom_role_arn(self) -> Optional[pulumi.Input[str]]: + """ + A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + """ + return pulumi.get(self, "custom_role_arn") + + @custom_role_arn.setter + def custom_role_arn(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "custom_role_arn", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + The description for this template. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="encryptionConfigurations") + def encryption_configurations(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RepositoryCreationTemplateEncryptionConfigurationArgs']]]]: + """ + Encryption configuration for any created repositories. See below for schema. + """ + return pulumi.get(self, "encryption_configurations") + + @encryption_configurations.setter + def encryption_configurations(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RepositoryCreationTemplateEncryptionConfigurationArgs']]]]): + pulumi.set(self, "encryption_configurations", value) + + @property + @pulumi.getter(name="imageTagMutability") + def image_tag_mutability(self) -> Optional[pulumi.Input[str]]: + """ + The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + """ + return pulumi.get(self, "image_tag_mutability") + + @image_tag_mutability.setter + def image_tag_mutability(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "image_tag_mutability", value) + + @property + @pulumi.getter(name="lifecyclePolicy") + def lifecycle_policy(self) -> Optional[pulumi.Input[str]]: + """ + The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `ecr_get_lifecycle_policy_document` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + """ + return pulumi.get(self, "lifecycle_policy") + + @lifecycle_policy.setter + def lifecycle_policy(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "lifecycle_policy", value) + + @property + @pulumi.getter + def prefix(self) -> Optional[pulumi.Input[str]]: + """ + The repository name prefix to match against. + """ + return pulumi.get(self, "prefix") + + @prefix.setter + def prefix(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "prefix", value) + + @property + @pulumi.getter(name="registryId") + def registry_id(self) -> Optional[pulumi.Input[str]]: + """ + The registry ID the repository creation template applies to. + """ + return pulumi.get(self, "registry_id") + + @registry_id.setter + def registry_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "registry_id", value) + + @property + @pulumi.getter(name="repositoryPolicy") + def repository_policy(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "repository_policy") + + @repository_policy.setter + def repository_policy(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "repository_policy", value) + + @property + @pulumi.getter(name="resourceTags") + def resource_tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + A map of tags to assign to any created repositories. + """ + return pulumi.get(self, "resource_tags") + + @resource_tags.setter + def resource_tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "resource_tags", value) + + +class RepositoryCreationTemplate(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + applied_fors: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + custom_role_arn: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + encryption_configurations: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RepositoryCreationTemplateEncryptionConfigurationArgs', 'RepositoryCreationTemplateEncryptionConfigurationArgsDict']]]]] = None, + image_tag_mutability: Optional[pulumi.Input[str]] = None, + lifecycle_policy: Optional[pulumi.Input[str]] = None, + prefix: Optional[pulumi.Input[str]] = None, + repository_policy: Optional[pulumi.Input[str]] = None, + resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + __props__=None): + """ + Provides an Elastic Container Registry Repository Creation Template. + + ## Example Usage + + ```python + import pulumi + import pulumi_aws as aws + + example = aws.iam.get_policy_document(statements=[{ + "sid": "new policy", + "effect": "Allow", + "principals": [{ + "type": "AWS", + "identifiers": ["123456789012"], + }], + "actions": [ + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage", + "ecr:BatchCheckLayerAvailability", + "ecr:PutImage", + "ecr:InitiateLayerUpload", + "ecr:UploadLayerPart", + "ecr:CompleteLayerUpload", + "ecr:DescribeRepositories", + "ecr:GetRepositoryPolicy", + "ecr:ListImages", + "ecr:DeleteRepository", + "ecr:BatchDeleteImage", + "ecr:SetRepositoryPolicy", + "ecr:DeleteRepositoryPolicy", + ], + }]) + example_repository_creation_template = aws.ecr.RepositoryCreationTemplate("example", + prefix="example", + description="An example template", + image_tag_mutability="IMMUTABLE", + custom_role_arn="arn:aws:iam::123456789012:role/example", + applied_fors=["PULL_THROUGH_CACHE"], + encryption_configurations=[{ + "encryption_type": "AES256", + }], + repository_policy=example.json, + lifecycle_policy=\"\"\"{ + "rules": [ + { + "rulePriority": 1, + "description": "Expire images older than 14 days", + "selection": { + "tagStatus": "untagged", + "countType": "sinceImagePushed", + "countUnit": "days", + "countNumber": 14 + }, + "action": { + "type": "expire" + } + } + ] + } + \"\"\", + resource_tags={ + "Foo": "Bar", + }) + ``` + + ## Import + + Using `pulumi import`, import the ECR Repository Creating Templates using the `prefix`. For example: + + ```sh + $ pulumi import aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate example example + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[Sequence[pulumi.Input[str]]] applied_fors: Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + :param pulumi.Input[str] custom_role_arn: A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + :param pulumi.Input[str] description: The description for this template. + :param pulumi.Input[Sequence[pulumi.Input[Union['RepositoryCreationTemplateEncryptionConfigurationArgs', 'RepositoryCreationTemplateEncryptionConfigurationArgsDict']]]] encryption_configurations: Encryption configuration for any created repositories. See below for schema. + :param pulumi.Input[str] image_tag_mutability: The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + :param pulumi.Input[str] lifecycle_policy: The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `ecr_get_lifecycle_policy_document` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + :param pulumi.Input[str] prefix: The repository name prefix to match against. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_tags: A map of tags to assign to any created repositories. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: RepositoryCreationTemplateArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Provides an Elastic Container Registry Repository Creation Template. + + ## Example Usage + + ```python + import pulumi + import pulumi_aws as aws + + example = aws.iam.get_policy_document(statements=[{ + "sid": "new policy", + "effect": "Allow", + "principals": [{ + "type": "AWS", + "identifiers": ["123456789012"], + }], + "actions": [ + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage", + "ecr:BatchCheckLayerAvailability", + "ecr:PutImage", + "ecr:InitiateLayerUpload", + "ecr:UploadLayerPart", + "ecr:CompleteLayerUpload", + "ecr:DescribeRepositories", + "ecr:GetRepositoryPolicy", + "ecr:ListImages", + "ecr:DeleteRepository", + "ecr:BatchDeleteImage", + "ecr:SetRepositoryPolicy", + "ecr:DeleteRepositoryPolicy", + ], + }]) + example_repository_creation_template = aws.ecr.RepositoryCreationTemplate("example", + prefix="example", + description="An example template", + image_tag_mutability="IMMUTABLE", + custom_role_arn="arn:aws:iam::123456789012:role/example", + applied_fors=["PULL_THROUGH_CACHE"], + encryption_configurations=[{ + "encryption_type": "AES256", + }], + repository_policy=example.json, + lifecycle_policy=\"\"\"{ + "rules": [ + { + "rulePriority": 1, + "description": "Expire images older than 14 days", + "selection": { + "tagStatus": "untagged", + "countType": "sinceImagePushed", + "countUnit": "days", + "countNumber": 14 + }, + "action": { + "type": "expire" + } + } + ] + } + \"\"\", + resource_tags={ + "Foo": "Bar", + }) + ``` + + ## Import + + Using `pulumi import`, import the ECR Repository Creating Templates using the `prefix`. For example: + + ```sh + $ pulumi import aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate example example + ``` + + :param str resource_name: The name of the resource. + :param RepositoryCreationTemplateArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(RepositoryCreationTemplateArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + applied_fors: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + custom_role_arn: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + encryption_configurations: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RepositoryCreationTemplateEncryptionConfigurationArgs', 'RepositoryCreationTemplateEncryptionConfigurationArgsDict']]]]] = None, + image_tag_mutability: Optional[pulumi.Input[str]] = None, + lifecycle_policy: Optional[pulumi.Input[str]] = None, + prefix: Optional[pulumi.Input[str]] = None, + repository_policy: Optional[pulumi.Input[str]] = None, + resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = RepositoryCreationTemplateArgs.__new__(RepositoryCreationTemplateArgs) + + if applied_fors is None and not opts.urn: + raise TypeError("Missing required property 'applied_fors'") + __props__.__dict__["applied_fors"] = applied_fors + __props__.__dict__["custom_role_arn"] = custom_role_arn + __props__.__dict__["description"] = description + __props__.__dict__["encryption_configurations"] = encryption_configurations + __props__.__dict__["image_tag_mutability"] = image_tag_mutability + __props__.__dict__["lifecycle_policy"] = lifecycle_policy + if prefix is None and not opts.urn: + raise TypeError("Missing required property 'prefix'") + __props__.__dict__["prefix"] = prefix + __props__.__dict__["repository_policy"] = repository_policy + __props__.__dict__["resource_tags"] = resource_tags + __props__.__dict__["registry_id"] = None + super(RepositoryCreationTemplate, __self__).__init__( + 'aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + applied_fors: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + custom_role_arn: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + encryption_configurations: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RepositoryCreationTemplateEncryptionConfigurationArgs', 'RepositoryCreationTemplateEncryptionConfigurationArgsDict']]]]] = None, + image_tag_mutability: Optional[pulumi.Input[str]] = None, + lifecycle_policy: Optional[pulumi.Input[str]] = None, + prefix: Optional[pulumi.Input[str]] = None, + registry_id: Optional[pulumi.Input[str]] = None, + repository_policy: Optional[pulumi.Input[str]] = None, + resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None) -> 'RepositoryCreationTemplate': + """ + Get an existing RepositoryCreationTemplate resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[Sequence[pulumi.Input[str]]] applied_fors: Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + :param pulumi.Input[str] custom_role_arn: A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + :param pulumi.Input[str] description: The description for this template. + :param pulumi.Input[Sequence[pulumi.Input[Union['RepositoryCreationTemplateEncryptionConfigurationArgs', 'RepositoryCreationTemplateEncryptionConfigurationArgsDict']]]] encryption_configurations: Encryption configuration for any created repositories. See below for schema. + :param pulumi.Input[str] image_tag_mutability: The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + :param pulumi.Input[str] lifecycle_policy: The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `ecr_get_lifecycle_policy_document` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + :param pulumi.Input[str] prefix: The repository name prefix to match against. + :param pulumi.Input[str] registry_id: The registry ID the repository creation template applies to. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_tags: A map of tags to assign to any created repositories. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _RepositoryCreationTemplateState.__new__(_RepositoryCreationTemplateState) + + __props__.__dict__["applied_fors"] = applied_fors + __props__.__dict__["custom_role_arn"] = custom_role_arn + __props__.__dict__["description"] = description + __props__.__dict__["encryption_configurations"] = encryption_configurations + __props__.__dict__["image_tag_mutability"] = image_tag_mutability + __props__.__dict__["lifecycle_policy"] = lifecycle_policy + __props__.__dict__["prefix"] = prefix + __props__.__dict__["registry_id"] = registry_id + __props__.__dict__["repository_policy"] = repository_policy + __props__.__dict__["resource_tags"] = resource_tags + return RepositoryCreationTemplate(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="appliedFors") + def applied_fors(self) -> pulumi.Output[Sequence[str]]: + """ + Which features this template applies to. Must contain one or more of `PULL_THROUGH_CACHE` or `REPLICATION`. + """ + return pulumi.get(self, "applied_fors") + + @property + @pulumi.getter(name="customRoleArn") + def custom_role_arn(self) -> pulumi.Output[Optional[str]]: + """ + A custom IAM role to use for repository creation. Required if using repository tags or KMS encryption. + """ + return pulumi.get(self, "custom_role_arn") + + @property + @pulumi.getter + def description(self) -> pulumi.Output[Optional[str]]: + """ + The description for this template. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="encryptionConfigurations") + def encryption_configurations(self) -> pulumi.Output[Optional[Sequence['outputs.RepositoryCreationTemplateEncryptionConfiguration']]]: + """ + Encryption configuration for any created repositories. See below for schema. + """ + return pulumi.get(self, "encryption_configurations") + + @property + @pulumi.getter(name="imageTagMutability") + def image_tag_mutability(self) -> pulumi.Output[Optional[str]]: + """ + The tag mutability setting for any created repositories. Must be one of: `MUTABLE` or `IMMUTABLE`. Defaults to `MUTABLE`. + """ + return pulumi.get(self, "image_tag_mutability") + + @property + @pulumi.getter(name="lifecyclePolicy") + def lifecycle_policy(self) -> pulumi.Output[Optional[str]]: + """ + The lifecycle policy document to apply to any created repositories. See more details about [Policy Parameters](http://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html#lifecycle_policy_parameters) in the official AWS docs. Consider using the `ecr_get_lifecycle_policy_document` data_source to generate/manage the JSON document used for the `lifecycle_policy` argument. + """ + return pulumi.get(self, "lifecycle_policy") + + @property + @pulumi.getter + def prefix(self) -> pulumi.Output[str]: + """ + The repository name prefix to match against. + """ + return pulumi.get(self, "prefix") + + @property + @pulumi.getter(name="registryId") + def registry_id(self) -> pulumi.Output[str]: + """ + The registry ID the repository creation template applies to. + """ + return pulumi.get(self, "registry_id") + + @property + @pulumi.getter(name="repositoryPolicy") + def repository_policy(self) -> pulumi.Output[Optional[str]]: + return pulumi.get(self, "repository_policy") + + @property + @pulumi.getter(name="resourceTags") + def resource_tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]: + """ + A map of tags to assign to any created repositories. + """ + return pulumi.get(self, "resource_tags") + diff --git a/sdk/python/pulumi_aws/eks/_inputs.py b/sdk/python/pulumi_aws/eks/_inputs.py index 00f43e65945..91e144e3bf3 100644 --- a/sdk/python/pulumi_aws/eks/_inputs.py +++ b/sdk/python/pulumi_aws/eks/_inputs.py @@ -35,6 +35,8 @@ 'ClusterOutpostConfigArgsDict', 'ClusterOutpostConfigControlPlanePlacementArgs', 'ClusterOutpostConfigControlPlanePlacementArgsDict', + 'ClusterUpgradePolicyArgs', + 'ClusterUpgradePolicyArgsDict', 'ClusterVpcConfigArgs', 'ClusterVpcConfigArgsDict', 'FargateProfileSelectorArgs', @@ -557,6 +559,38 @@ def group_name(self, value: pulumi.Input[str]): pulumi.set(self, "group_name", value) +if not MYPY: + class ClusterUpgradePolicyArgsDict(TypedDict): + support_type: NotRequired[pulumi.Input[str]] + """ + Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + """ +elif False: + ClusterUpgradePolicyArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class ClusterUpgradePolicyArgs: + def __init__(__self__, *, + support_type: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] support_type: Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + """ + if support_type is not None: + pulumi.set(__self__, "support_type", support_type) + + @property + @pulumi.getter(name="supportType") + def support_type(self) -> Optional[pulumi.Input[str]]: + """ + Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + """ + return pulumi.get(self, "support_type") + + @support_type.setter + def support_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "support_type", value) + + if not MYPY: class ClusterVpcConfigArgsDict(TypedDict): subnet_ids: pulumi.Input[Sequence[pulumi.Input[str]]] diff --git a/sdk/python/pulumi_aws/eks/cluster.py b/sdk/python/pulumi_aws/eks/cluster.py index 05d91263e18..ae3b90abdcb 100644 --- a/sdk/python/pulumi_aws/eks/cluster.py +++ b/sdk/python/pulumi_aws/eks/cluster.py @@ -32,6 +32,7 @@ def __init__(__self__, *, name: Optional[pulumi.Input[str]] = None, outpost_config: Optional[pulumi.Input['ClusterOutpostConfigArgs']] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + upgrade_policy: Optional[pulumi.Input['ClusterUpgradePolicyArgs']] = None, version: Optional[pulumi.Input[str]] = None): """ The set of arguments for constructing a Cluster resource. @@ -47,6 +48,7 @@ def __init__(__self__, *, :param pulumi.Input[str] name: Name of the cluster. Must be between 1-100 characters in length. Must begin with an alphanumeric character, and must only contain alphanumeric characters, dashes and underscores (`^[0-9A-Za-z][A-Za-z0-9\\-_]*$`). :param pulumi.Input['ClusterOutpostConfigArgs'] outpost_config: Configuration block representing the configuration of your local Amazon EKS cluster on an AWS Outpost. This block isn't available for creating Amazon EKS clusters on the AWS cloud. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + :param pulumi.Input['ClusterUpgradePolicyArgs'] upgrade_policy: Configuration block for the support policy to use for the cluster. See upgrade_policy for details. :param pulumi.Input[str] version: Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. """ pulumi.set(__self__, "role_arn", role_arn) @@ -69,6 +71,8 @@ def __init__(__self__, *, pulumi.set(__self__, "outpost_config", outpost_config) if tags is not None: pulumi.set(__self__, "tags", tags) + if upgrade_policy is not None: + pulumi.set(__self__, "upgrade_policy", upgrade_policy) if version is not None: pulumi.set(__self__, "version", version) @@ -203,6 +207,18 @@ def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): pulumi.set(self, "tags", value) + @property + @pulumi.getter(name="upgradePolicy") + def upgrade_policy(self) -> Optional[pulumi.Input['ClusterUpgradePolicyArgs']]: + """ + Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + """ + return pulumi.get(self, "upgrade_policy") + + @upgrade_policy.setter + def upgrade_policy(self, value: Optional[pulumi.Input['ClusterUpgradePolicyArgs']]): + pulumi.set(self, "upgrade_policy", value) + @property @pulumi.getter def version(self) -> Optional[pulumi.Input[str]]: @@ -239,6 +255,7 @@ def __init__(__self__, *, status: Optional[pulumi.Input[str]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + upgrade_policy: Optional[pulumi.Input['ClusterUpgradePolicyArgs']] = None, version: Optional[pulumi.Input[str]] = None, vpc_config: Optional[pulumi.Input['ClusterVpcConfigArgs']] = None): """ @@ -261,6 +278,7 @@ def __init__(__self__, *, :param pulumi.Input[str] status: Status of the EKS cluster. One of `CREATING`, `ACTIVE`, `DELETING`, `FAILED`. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags_all: Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + :param pulumi.Input['ClusterUpgradePolicyArgs'] upgrade_policy: Configuration block for the support policy to use for the cluster. See upgrade_policy for details. :param pulumi.Input[str] version: Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. :param pulumi.Input['ClusterVpcConfigArgs'] vpc_config: Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section. @@ -309,6 +327,8 @@ def __init__(__self__, *, pulumi.log.warn("""tags_all is deprecated: Please use `tags` instead.""") if tags_all is not None: pulumi.set(__self__, "tags_all", tags_all) + if upgrade_policy is not None: + pulumi.set(__self__, "upgrade_policy", upgrade_policy) if version is not None: pulumi.set(__self__, "version", version) if vpc_config is not None: @@ -549,6 +569,18 @@ def tags_all(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: def tags_all(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): pulumi.set(self, "tags_all", value) + @property + @pulumi.getter(name="upgradePolicy") + def upgrade_policy(self) -> Optional[pulumi.Input['ClusterUpgradePolicyArgs']]: + """ + Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + """ + return pulumi.get(self, "upgrade_policy") + + @upgrade_policy.setter + def upgrade_policy(self, value: Optional[pulumi.Input['ClusterUpgradePolicyArgs']]): + pulumi.set(self, "upgrade_policy", value) + @property @pulumi.getter def version(self) -> Optional[pulumi.Input[str]]: @@ -591,6 +623,7 @@ def __init__(__self__, outpost_config: Optional[pulumi.Input[Union['ClusterOutpostConfigArgs', 'ClusterOutpostConfigArgsDict']]] = None, role_arn: Optional[pulumi.Input[str]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + upgrade_policy: Optional[pulumi.Input[Union['ClusterUpgradePolicyArgs', 'ClusterUpgradePolicyArgsDict']]] = None, version: Optional[pulumi.Input[str]] = None, vpc_config: Optional[pulumi.Input[Union['ClusterVpcConfigArgs', 'ClusterVpcConfigArgsDict']]] = None, __props__=None): @@ -778,6 +811,7 @@ def __init__(__self__, :param pulumi.Input[Union['ClusterOutpostConfigArgs', 'ClusterOutpostConfigArgsDict']] outpost_config: Configuration block representing the configuration of your local Amazon EKS cluster on an AWS Outpost. This block isn't available for creating Amazon EKS clusters on the AWS cloud. :param pulumi.Input[str] role_arn: ARN of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. Ensure the resource configuration includes explicit dependencies on the IAM Role permissions by adding `depends_on` if using the `iam.RolePolicy` resource or `iam.RolePolicyAttachment` resource, otherwise EKS cannot delete EKS managed EC2 infrastructure such as Security Groups on EKS Cluster deletion. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + :param pulumi.Input[Union['ClusterUpgradePolicyArgs', 'ClusterUpgradePolicyArgsDict']] upgrade_policy: Configuration block for the support policy to use for the cluster. See upgrade_policy for details. :param pulumi.Input[str] version: Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. :param pulumi.Input[Union['ClusterVpcConfigArgs', 'ClusterVpcConfigArgsDict']] vpc_config: Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section. @@ -987,6 +1021,7 @@ def _internal_init(__self__, outpost_config: Optional[pulumi.Input[Union['ClusterOutpostConfigArgs', 'ClusterOutpostConfigArgsDict']]] = None, role_arn: Optional[pulumi.Input[str]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + upgrade_policy: Optional[pulumi.Input[Union['ClusterUpgradePolicyArgs', 'ClusterUpgradePolicyArgsDict']]] = None, version: Optional[pulumi.Input[str]] = None, vpc_config: Optional[pulumi.Input[Union['ClusterVpcConfigArgs', 'ClusterVpcConfigArgsDict']]] = None, __props__=None): @@ -1010,6 +1045,7 @@ def _internal_init(__self__, raise TypeError("Missing required property 'role_arn'") __props__.__dict__["role_arn"] = role_arn __props__.__dict__["tags"] = tags + __props__.__dict__["upgrade_policy"] = upgrade_policy __props__.__dict__["version"] = version if vpc_config is None and not opts.urn: raise TypeError("Missing required property 'vpc_config'") @@ -1054,6 +1090,7 @@ def get(resource_name: str, status: Optional[pulumi.Input[str]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + upgrade_policy: Optional[pulumi.Input[Union['ClusterUpgradePolicyArgs', 'ClusterUpgradePolicyArgsDict']]] = None, version: Optional[pulumi.Input[str]] = None, vpc_config: Optional[pulumi.Input[Union['ClusterVpcConfigArgs', 'ClusterVpcConfigArgsDict']]] = None) -> 'Cluster': """ @@ -1081,6 +1118,7 @@ def get(resource_name: str, :param pulumi.Input[str] status: Status of the EKS cluster. One of `CREATING`, `ACTIVE`, `DELETING`, `FAILED`. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags_all: Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + :param pulumi.Input[Union['ClusterUpgradePolicyArgs', 'ClusterUpgradePolicyArgsDict']] upgrade_policy: Configuration block for the support policy to use for the cluster. See upgrade_policy for details. :param pulumi.Input[str] version: Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS. :param pulumi.Input[Union['ClusterVpcConfigArgs', 'ClusterVpcConfigArgsDict']] vpc_config: Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section. @@ -1110,6 +1148,7 @@ def get(resource_name: str, __props__.__dict__["status"] = status __props__.__dict__["tags"] = tags __props__.__dict__["tags_all"] = tags_all + __props__.__dict__["upgrade_policy"] = upgrade_policy __props__.__dict__["version"] = version __props__.__dict__["vpc_config"] = vpc_config return Cluster(resource_name, opts=opts, __props__=__props__) @@ -1269,6 +1308,14 @@ def tags_all(self) -> pulumi.Output[Mapping[str, str]]: """ return pulumi.get(self, "tags_all") + @property + @pulumi.getter(name="upgradePolicy") + def upgrade_policy(self) -> pulumi.Output['outputs.ClusterUpgradePolicy']: + """ + Configuration block for the support policy to use for the cluster. See upgrade_policy for details. + """ + return pulumi.get(self, "upgrade_policy") + @property @pulumi.getter def version(self) -> pulumi.Output[str]: diff --git a/sdk/python/pulumi_aws/eks/get_cluster.py b/sdk/python/pulumi_aws/eks/get_cluster.py index 33e6fd85967..ae220e8eea6 100644 --- a/sdk/python/pulumi_aws/eks/get_cluster.py +++ b/sdk/python/pulumi_aws/eks/get_cluster.py @@ -27,7 +27,7 @@ class GetClusterResult: """ A collection of values returned by getCluster. """ - def __init__(__self__, access_configs=None, arn=None, certificate_authorities=None, cluster_id=None, created_at=None, enabled_cluster_log_types=None, endpoint=None, id=None, identities=None, kubernetes_network_configs=None, name=None, outpost_configs=None, platform_version=None, role_arn=None, status=None, tags=None, version=None, vpc_config=None): + def __init__(__self__, access_configs=None, arn=None, certificate_authorities=None, cluster_id=None, created_at=None, enabled_cluster_log_types=None, endpoint=None, id=None, identities=None, kubernetes_network_configs=None, name=None, outpost_configs=None, platform_version=None, role_arn=None, status=None, tags=None, upgrade_policies=None, version=None, vpc_config=None): if access_configs and not isinstance(access_configs, list): raise TypeError("Expected argument 'access_configs' to be a list") pulumi.set(__self__, "access_configs", access_configs) @@ -76,6 +76,9 @@ def __init__(__self__, access_configs=None, arn=None, certificate_authorities=No if tags and not isinstance(tags, dict): raise TypeError("Expected argument 'tags' to be a dict") pulumi.set(__self__, "tags", tags) + if upgrade_policies and not isinstance(upgrade_policies, list): + raise TypeError("Expected argument 'upgrade_policies' to be a list") + pulumi.set(__self__, "upgrade_policies", upgrade_policies) if version and not isinstance(version, str): raise TypeError("Expected argument 'version' to be a str") pulumi.set(__self__, "version", version) @@ -208,6 +211,14 @@ def tags(self) -> Mapping[str, str]: """ return pulumi.get(self, "tags") + @property + @pulumi.getter(name="upgradePolicies") + def upgrade_policies(self) -> Sequence['outputs.GetClusterUpgradePolicyResult']: + """ + (Optional) Configuration block for the support policy to use for the cluster. + """ + return pulumi.get(self, "upgrade_policies") + @property @pulumi.getter def version(self) -> str: @@ -247,6 +258,7 @@ def __await__(self): role_arn=self.role_arn, status=self.status, tags=self.tags, + upgrade_policies=self.upgrade_policies, version=self.version, vpc_config=self.vpc_config) @@ -296,6 +308,7 @@ def get_cluster(name: Optional[str] = None, role_arn=pulumi.get(__ret__, 'role_arn'), status=pulumi.get(__ret__, 'status'), tags=pulumi.get(__ret__, 'tags'), + upgrade_policies=pulumi.get(__ret__, 'upgrade_policies'), version=pulumi.get(__ret__, 'version'), vpc_config=pulumi.get(__ret__, 'vpc_config')) diff --git a/sdk/python/pulumi_aws/eks/outputs.py b/sdk/python/pulumi_aws/eks/outputs.py index c9c5b934a3c..4fd14db06e3 100644 --- a/sdk/python/pulumi_aws/eks/outputs.py +++ b/sdk/python/pulumi_aws/eks/outputs.py @@ -26,6 +26,7 @@ 'ClusterKubernetesNetworkConfig', 'ClusterOutpostConfig', 'ClusterOutpostConfigControlPlanePlacement', + 'ClusterUpgradePolicy', 'ClusterVpcConfig', 'FargateProfileSelector', 'IdentityProviderConfigOidc', @@ -43,6 +44,7 @@ 'GetClusterKubernetesNetworkConfigResult', 'GetClusterOutpostConfigResult', 'GetClusterOutpostConfigControlPlanePlacementResult', + 'GetClusterUpgradePolicyResult', 'GetClusterVpcConfigResult', 'GetNodeGroupLaunchTemplateResult', 'GetNodeGroupRemoteAccessResult', @@ -444,6 +446,42 @@ def group_name(self) -> str: return pulumi.get(self, "group_name") +@pulumi.output_type +class ClusterUpgradePolicy(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "supportType": + suggest = "support_type" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ClusterUpgradePolicy. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ClusterUpgradePolicy.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ClusterUpgradePolicy.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + support_type: Optional[str] = None): + """ + :param str support_type: Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + """ + if support_type is not None: + pulumi.set(__self__, "support_type", support_type) + + @property + @pulumi.getter(name="supportType") + def support_type(self) -> Optional[str]: + """ + Support type to use for the cluster. If the cluster is set to `EXTENDED`, it will enter extended support at the end of standard support. If the cluster is set to `STANDARD`, it will be automatically upgraded at the end of standard support. Valid values are `EXTENDED`, `STANDARD` + """ + return pulumi.get(self, "support_type") + + @pulumi.output_type class ClusterVpcConfig(dict): @staticmethod @@ -1222,6 +1260,24 @@ def group_name(self) -> str: return pulumi.get(self, "group_name") +@pulumi.output_type +class GetClusterUpgradePolicyResult(dict): + def __init__(__self__, *, + support_type: str): + """ + :param str support_type: (Optional) Support type to use for the cluster. + """ + pulumi.set(__self__, "support_type", support_type) + + @property + @pulumi.getter(name="supportType") + def support_type(self) -> str: + """ + (Optional) Support type to use for the cluster. + """ + return pulumi.get(self, "support_type") + + @pulumi.output_type class GetClusterVpcConfigResult(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_aws/elasticache/user_group_association.py b/sdk/python/pulumi_aws/elasticache/user_group_association.py index ba06dabdf7e..98deae9e5ce 100644 --- a/sdk/python/pulumi_aws/elasticache/user_group_association.py +++ b/sdk/python/pulumi_aws/elasticache/user_group_association.py @@ -103,10 +103,6 @@ def __init__(__self__, user_id: Optional[pulumi.Input[str]] = None, __props__=None): """ - Associate an existing ElastiCache user and an existing user group. - - > **NOTE:** The provider will detect changes in the `elasticache.UserGroup` since `elasticache.UserGroupAssociation` changes the user IDs associated with the user group. You can ignore these changes with the `ignore_changes` option as shown in the example. - ## Example Usage ```python @@ -154,10 +150,6 @@ def __init__(__self__, args: UserGroupAssociationArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Associate an existing ElastiCache user and an existing user group. - - > **NOTE:** The provider will detect changes in the `elasticache.UserGroup` since `elasticache.UserGroupAssociation` changes the user IDs associated with the user group. You can ignore these changes with the `ignore_changes` option as shown in the example. - ## Example Usage ```python diff --git a/sdk/python/pulumi_aws/pipes/_inputs.py b/sdk/python/pulumi_aws/pipes/_inputs.py index 665d8c572c0..48ac795c108 100644 --- a/sdk/python/pulumi_aws/pipes/_inputs.py +++ b/sdk/python/pulumi_aws/pipes/_inputs.py @@ -242,6 +242,10 @@ class PipeLogConfigurationArgsDict(TypedDict): """ Amazon Kinesis Data Firehose logging configuration settings for the pipe. Detailed below. """ + include_execution_datas: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] + """ + String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + """ s3_log_destination: NotRequired[pulumi.Input['PipeLogConfigurationS3LogDestinationArgsDict']] """ Amazon S3 logging configuration settings for the pipe. Detailed below. @@ -255,11 +259,13 @@ def __init__(__self__, *, level: pulumi.Input[str], cloudwatch_logs_log_destination: Optional[pulumi.Input['PipeLogConfigurationCloudwatchLogsLogDestinationArgs']] = None, firehose_log_destination: Optional[pulumi.Input['PipeLogConfigurationFirehoseLogDestinationArgs']] = None, + include_execution_datas: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, s3_log_destination: Optional[pulumi.Input['PipeLogConfigurationS3LogDestinationArgs']] = None): """ :param pulumi.Input[str] level: The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. :param pulumi.Input['PipeLogConfigurationCloudwatchLogsLogDestinationArgs'] cloudwatch_logs_log_destination: Amazon CloudWatch Logs logging configuration settings for the pipe. Detailed below. :param pulumi.Input['PipeLogConfigurationFirehoseLogDestinationArgs'] firehose_log_destination: Amazon Kinesis Data Firehose logging configuration settings for the pipe. Detailed below. + :param pulumi.Input[Sequence[pulumi.Input[str]]] include_execution_datas: String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. :param pulumi.Input['PipeLogConfigurationS3LogDestinationArgs'] s3_log_destination: Amazon S3 logging configuration settings for the pipe. Detailed below. """ pulumi.set(__self__, "level", level) @@ -267,6 +273,8 @@ def __init__(__self__, *, pulumi.set(__self__, "cloudwatch_logs_log_destination", cloudwatch_logs_log_destination) if firehose_log_destination is not None: pulumi.set(__self__, "firehose_log_destination", firehose_log_destination) + if include_execution_datas is not None: + pulumi.set(__self__, "include_execution_datas", include_execution_datas) if s3_log_destination is not None: pulumi.set(__self__, "s3_log_destination", s3_log_destination) @@ -306,6 +314,18 @@ def firehose_log_destination(self) -> Optional[pulumi.Input['PipeLogConfiguratio def firehose_log_destination(self, value: Optional[pulumi.Input['PipeLogConfigurationFirehoseLogDestinationArgs']]): pulumi.set(self, "firehose_log_destination", value) + @property + @pulumi.getter(name="includeExecutionDatas") + def include_execution_datas(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + """ + return pulumi.get(self, "include_execution_datas") + + @include_execution_datas.setter + def include_execution_datas(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "include_execution_datas", value) + @property @pulumi.getter(name="s3LogDestination") def s3_log_destination(self) -> Optional[pulumi.Input['PipeLogConfigurationS3LogDestinationArgs']]: diff --git a/sdk/python/pulumi_aws/pipes/outputs.py b/sdk/python/pulumi_aws/pipes/outputs.py index d483f679f8a..cc6e2f5e2cb 100644 --- a/sdk/python/pulumi_aws/pipes/outputs.py +++ b/sdk/python/pulumi_aws/pipes/outputs.py @@ -181,6 +181,8 @@ def __key_warning(key: str): suggest = "cloudwatch_logs_log_destination" elif key == "firehoseLogDestination": suggest = "firehose_log_destination" + elif key == "includeExecutionDatas": + suggest = "include_execution_datas" elif key == "s3LogDestination": suggest = "s3_log_destination" @@ -199,11 +201,13 @@ def __init__(__self__, *, level: str, cloudwatch_logs_log_destination: Optional['outputs.PipeLogConfigurationCloudwatchLogsLogDestination'] = None, firehose_log_destination: Optional['outputs.PipeLogConfigurationFirehoseLogDestination'] = None, + include_execution_datas: Optional[Sequence[str]] = None, s3_log_destination: Optional['outputs.PipeLogConfigurationS3LogDestination'] = None): """ :param str level: The level of logging detail to include. Valid values `OFF`, `ERROR`, `INFO` and `TRACE`. :param 'PipeLogConfigurationCloudwatchLogsLogDestinationArgs' cloudwatch_logs_log_destination: Amazon CloudWatch Logs logging configuration settings for the pipe. Detailed below. :param 'PipeLogConfigurationFirehoseLogDestinationArgs' firehose_log_destination: Amazon Kinesis Data Firehose logging configuration settings for the pipe. Detailed below. + :param Sequence[str] include_execution_datas: String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. :param 'PipeLogConfigurationS3LogDestinationArgs' s3_log_destination: Amazon S3 logging configuration settings for the pipe. Detailed below. """ pulumi.set(__self__, "level", level) @@ -211,6 +215,8 @@ def __init__(__self__, *, pulumi.set(__self__, "cloudwatch_logs_log_destination", cloudwatch_logs_log_destination) if firehose_log_destination is not None: pulumi.set(__self__, "firehose_log_destination", firehose_log_destination) + if include_execution_datas is not None: + pulumi.set(__self__, "include_execution_datas", include_execution_datas) if s3_log_destination is not None: pulumi.set(__self__, "s3_log_destination", s3_log_destination) @@ -238,6 +244,14 @@ def firehose_log_destination(self) -> Optional['outputs.PipeLogConfigurationFire """ return pulumi.get(self, "firehose_log_destination") + @property + @pulumi.getter(name="includeExecutionDatas") + def include_execution_datas(self) -> Optional[Sequence[str]]: + """ + String list that specifies whether the execution data (specifically, the `payload`, `awsRequest`, and `awsResponse` fields) is included in the log messages for this pipe. This applies to all log destinations for the pipe. Valid values `ALL`. + """ + return pulumi.get(self, "include_execution_datas") + @property @pulumi.getter(name="s3LogDestination") def s3_log_destination(self) -> Optional['outputs.PipeLogConfigurationS3LogDestination']: diff --git a/sdk/python/pulumi_aws/pipes/pipe.py b/sdk/python/pulumi_aws/pipes/pipe.py index 3a93b8010e6..95f25cae47f 100644 --- a/sdk/python/pulumi_aws/pipes/pipe.py +++ b/sdk/python/pulumi_aws/pipes/pipe.py @@ -631,6 +631,31 @@ def __init__(__self__, }) ``` + ### CloudWatch Logs Logging Configuration Usage + + ```python + import pulumi + import pulumi_aws as aws + + example = aws.cloudwatch.LogGroup("example", name="example-pipe-target") + example_pipe = aws.pipes.Pipe("example", + name="example-pipe", + role_arn=example_aws_iam_role["arn"], + source=source_aws_sqs_queue["arn"], + target=target_aws_sqs_queue["arn"], + log_configuration={ + "include_execution_datas": ["ALL"], + "level": "INFO", + "cloudwatch_logs_log_destination": { + "log_group_arn": target_aws_cloudwatch_log_group["arn"], + }, + }, + opts = pulumi.ResourceOptions(depends_on=[ + source, + target, + ])) + ``` + ## Import Using `pulumi import`, import pipes using the `name`. For example: @@ -784,6 +809,31 @@ def __init__(__self__, }) ``` + ### CloudWatch Logs Logging Configuration Usage + + ```python + import pulumi + import pulumi_aws as aws + + example = aws.cloudwatch.LogGroup("example", name="example-pipe-target") + example_pipe = aws.pipes.Pipe("example", + name="example-pipe", + role_arn=example_aws_iam_role["arn"], + source=source_aws_sqs_queue["arn"], + target=target_aws_sqs_queue["arn"], + log_configuration={ + "include_execution_datas": ["ALL"], + "level": "INFO", + "cloudwatch_logs_log_destination": { + "log_group_arn": target_aws_cloudwatch_log_group["arn"], + }, + }, + opts = pulumi.ResourceOptions(depends_on=[ + source, + target, + ])) + ``` + ## Import Using `pulumi import`, import pipes using the `name`. For example: diff --git a/sdk/python/pulumi_aws/rds/_inputs.py b/sdk/python/pulumi_aws/rds/_inputs.py index 95a53f7a9b0..c4d3142d5c3 100644 --- a/sdk/python/pulumi_aws/rds/_inputs.py +++ b/sdk/python/pulumi_aws/rds/_inputs.py @@ -214,10 +214,6 @@ def apply_method(self, value: Optional[pulumi.Input[str]]): if not MYPY: class ClusterRestoreToPointInTimeArgsDict(TypedDict): - source_cluster_identifier: pulumi.Input[str] - """ - Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. - """ restore_to_time: NotRequired[pulumi.Input[str]] """ Date and time in UTC format to restore the database cluster to. Conflicts with `use_latest_restorable_time`. @@ -227,6 +223,14 @@ class ClusterRestoreToPointInTimeArgsDict(TypedDict): Type of restore to be performed. Valid options are `full-copy` (default) and `copy-on-write`. """ + source_cluster_identifier: NotRequired[pulumi.Input[str]] + """ + Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. + """ + source_cluster_resource_id: NotRequired[pulumi.Input[str]] + """ + Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + """ use_latest_restorable_time: NotRequired[pulumi.Input[bool]] """ Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restore_to_time`. @@ -237,37 +241,30 @@ class ClusterRestoreToPointInTimeArgsDict(TypedDict): @pulumi.input_type class ClusterRestoreToPointInTimeArgs: def __init__(__self__, *, - source_cluster_identifier: pulumi.Input[str], restore_to_time: Optional[pulumi.Input[str]] = None, restore_type: Optional[pulumi.Input[str]] = None, + source_cluster_identifier: Optional[pulumi.Input[str]] = None, + source_cluster_resource_id: Optional[pulumi.Input[str]] = None, use_latest_restorable_time: Optional[pulumi.Input[bool]] = None): """ - :param pulumi.Input[str] source_cluster_identifier: Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. :param pulumi.Input[str] restore_to_time: Date and time in UTC format to restore the database cluster to. Conflicts with `use_latest_restorable_time`. :param pulumi.Input[str] restore_type: Type of restore to be performed. Valid options are `full-copy` (default) and `copy-on-write`. + :param pulumi.Input[str] source_cluster_identifier: Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. + :param pulumi.Input[str] source_cluster_resource_id: Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. :param pulumi.Input[bool] use_latest_restorable_time: Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restore_to_time`. """ - pulumi.set(__self__, "source_cluster_identifier", source_cluster_identifier) if restore_to_time is not None: pulumi.set(__self__, "restore_to_time", restore_to_time) if restore_type is not None: pulumi.set(__self__, "restore_type", restore_type) + if source_cluster_identifier is not None: + pulumi.set(__self__, "source_cluster_identifier", source_cluster_identifier) + if source_cluster_resource_id is not None: + pulumi.set(__self__, "source_cluster_resource_id", source_cluster_resource_id) if use_latest_restorable_time is not None: pulumi.set(__self__, "use_latest_restorable_time", use_latest_restorable_time) - @property - @pulumi.getter(name="sourceClusterIdentifier") - def source_cluster_identifier(self) -> pulumi.Input[str]: - """ - Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. - """ - return pulumi.get(self, "source_cluster_identifier") - - @source_cluster_identifier.setter - def source_cluster_identifier(self, value: pulumi.Input[str]): - pulumi.set(self, "source_cluster_identifier", value) - @property @pulumi.getter(name="restoreToTime") def restore_to_time(self) -> Optional[pulumi.Input[str]]: @@ -293,6 +290,30 @@ def restore_type(self) -> Optional[pulumi.Input[str]]: def restore_type(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "restore_type", value) + @property + @pulumi.getter(name="sourceClusterIdentifier") + def source_cluster_identifier(self) -> Optional[pulumi.Input[str]]: + """ + Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. + """ + return pulumi.get(self, "source_cluster_identifier") + + @source_cluster_identifier.setter + def source_cluster_identifier(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "source_cluster_identifier", value) + + @property + @pulumi.getter(name="sourceClusterResourceId") + def source_cluster_resource_id(self) -> Optional[pulumi.Input[str]]: + """ + Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + """ + return pulumi.get(self, "source_cluster_resource_id") + + @source_cluster_resource_id.setter + def source_cluster_resource_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "source_cluster_resource_id", value) + @property @pulumi.getter(name="useLatestRestorableTime") def use_latest_restorable_time(self) -> Optional[pulumi.Input[bool]]: diff --git a/sdk/python/pulumi_aws/rds/cluster.py b/sdk/python/pulumi_aws/rds/cluster.py index 9622bd9dd76..10213ffb109 100644 --- a/sdk/python/pulumi_aws/rds/cluster.py +++ b/sdk/python/pulumi_aws/rds/cluster.py @@ -62,6 +62,9 @@ def __init__(__self__, *, master_user_secret_kms_key_id: Optional[pulumi.Input[str]] = None, master_username: Optional[pulumi.Input[str]] = None, network_type: Optional[pulumi.Input[str]] = None, + performance_insights_enabled: Optional[pulumi.Input[bool]] = None, + performance_insights_kms_key_id: Optional[pulumi.Input[str]] = None, + performance_insights_retention_period: Optional[pulumi.Input[int]] = None, port: Optional[pulumi.Input[int]] = None, preferred_backup_window: Optional[pulumi.Input[str]] = None, preferred_maintenance_window: Optional[pulumi.Input[str]] = None, @@ -125,9 +128,12 @@ def __init__(__self__, *, :param pulumi.Input[str] master_user_secret_kms_key_id: Amazon Web Services KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key. To use a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN. If not specified, the default KMS key for your Amazon Web Services account is used. :param pulumi.Input[str] master_username: Username for the master DB user. Please refer to the [RDS Naming Constraints](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints). This argument does not support in-place updates and cannot be changed during a restore from snapshot. :param pulumi.Input[str] network_type: Network type of the cluster. Valid values: `IPV4`, `DUAL`. - :param pulumi.Input[int] port: Port on which the DB accepts connections - :param pulumi.Input[str] preferred_backup_window: Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 - :param pulumi.Input[str] preferred_maintenance_window: Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + :param pulumi.Input[bool] performance_insights_enabled: Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + :param pulumi.Input[str] performance_insights_kms_key_id: Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + :param pulumi.Input[int] performance_insights_retention_period: Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + :param pulumi.Input[int] port: Port on which the DB accepts connections. + :param pulumi.Input[str] preferred_backup_window: Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. + :param pulumi.Input[str] preferred_maintenance_window: Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` :param pulumi.Input[str] replication_source_identifier: ARN of a source DB cluster or DB instance if this DB cluster is to be created as a Read Replica. If DB Cluster is part of a Global Cluster, use the `lifecycle` configuration block `ignore_changes` argument to prevent this provider from showing differences for this argument instead of configuring this value. :param pulumi.Input['ClusterRestoreToPointInTimeArgs'] restore_to_point_in_time: Nested attribute for [point in time restore](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-pitr.html). More details below. :param pulumi.Input['ClusterScalingConfigurationArgs'] scaling_configuration: Nested attribute with scaling properties. Only valid when `engine_mode` is set to `serverless`. More details below. @@ -219,6 +225,12 @@ def __init__(__self__, *, pulumi.set(__self__, "master_username", master_username) if network_type is not None: pulumi.set(__self__, "network_type", network_type) + if performance_insights_enabled is not None: + pulumi.set(__self__, "performance_insights_enabled", performance_insights_enabled) + if performance_insights_kms_key_id is not None: + pulumi.set(__self__, "performance_insights_kms_key_id", performance_insights_kms_key_id) + if performance_insights_retention_period is not None: + pulumi.set(__self__, "performance_insights_retention_period", performance_insights_retention_period) if port is not None: pulumi.set(__self__, "port", port) if preferred_backup_window is not None: @@ -736,11 +748,47 @@ def network_type(self) -> Optional[pulumi.Input[str]]: def network_type(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "network_type", value) + @property + @pulumi.getter(name="performanceInsightsEnabled") + def performance_insights_enabled(self) -> Optional[pulumi.Input[bool]]: + """ + Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + """ + return pulumi.get(self, "performance_insights_enabled") + + @performance_insights_enabled.setter + def performance_insights_enabled(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "performance_insights_enabled", value) + + @property + @pulumi.getter(name="performanceInsightsKmsKeyId") + def performance_insights_kms_key_id(self) -> Optional[pulumi.Input[str]]: + """ + Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + """ + return pulumi.get(self, "performance_insights_kms_key_id") + + @performance_insights_kms_key_id.setter + def performance_insights_kms_key_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "performance_insights_kms_key_id", value) + + @property + @pulumi.getter(name="performanceInsightsRetentionPeriod") + def performance_insights_retention_period(self) -> Optional[pulumi.Input[int]]: + """ + Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + """ + return pulumi.get(self, "performance_insights_retention_period") + + @performance_insights_retention_period.setter + def performance_insights_retention_period(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "performance_insights_retention_period", value) + @property @pulumi.getter def port(self) -> Optional[pulumi.Input[int]]: """ - Port on which the DB accepts connections + Port on which the DB accepts connections. """ return pulumi.get(self, "port") @@ -752,7 +800,7 @@ def port(self, value: Optional[pulumi.Input[int]]): @pulumi.getter(name="preferredBackupWindow") def preferred_backup_window(self) -> Optional[pulumi.Input[str]]: """ - Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. """ return pulumi.get(self, "preferred_backup_window") @@ -764,7 +812,7 @@ def preferred_backup_window(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="preferredMaintenanceWindow") def preferred_maintenance_window(self) -> Optional[pulumi.Input[str]]: """ - Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` """ return pulumi.get(self, "preferred_maintenance_window") @@ -964,6 +1012,9 @@ def __init__(__self__, *, master_user_secrets: Optional[pulumi.Input[Sequence[pulumi.Input['ClusterMasterUserSecretArgs']]]] = None, master_username: Optional[pulumi.Input[str]] = None, network_type: Optional[pulumi.Input[str]] = None, + performance_insights_enabled: Optional[pulumi.Input[bool]] = None, + performance_insights_kms_key_id: Optional[pulumi.Input[str]] = None, + performance_insights_retention_period: Optional[pulumi.Input[int]] = None, port: Optional[pulumi.Input[int]] = None, preferred_backup_window: Optional[pulumi.Input[str]] = None, preferred_maintenance_window: Optional[pulumi.Input[str]] = None, @@ -1036,9 +1087,12 @@ def __init__(__self__, *, :param pulumi.Input[Sequence[pulumi.Input['ClusterMasterUserSecretArgs']]] master_user_secrets: Block that specifies the master user secret. Only available when `manage_master_user_password` is set to true. Documented below. :param pulumi.Input[str] master_username: Username for the master DB user. Please refer to the [RDS Naming Constraints](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints). This argument does not support in-place updates and cannot be changed during a restore from snapshot. :param pulumi.Input[str] network_type: Network type of the cluster. Valid values: `IPV4`, `DUAL`. - :param pulumi.Input[int] port: Port on which the DB accepts connections - :param pulumi.Input[str] preferred_backup_window: Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 - :param pulumi.Input[str] preferred_maintenance_window: Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + :param pulumi.Input[bool] performance_insights_enabled: Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + :param pulumi.Input[str] performance_insights_kms_key_id: Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + :param pulumi.Input[int] performance_insights_retention_period: Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + :param pulumi.Input[int] port: Port on which the DB accepts connections. + :param pulumi.Input[str] preferred_backup_window: Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. + :param pulumi.Input[str] preferred_maintenance_window: Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` :param pulumi.Input[str] reader_endpoint: Read-only endpoint for the Aurora cluster, automatically load-balanced across replicas :param pulumi.Input[str] replication_source_identifier: ARN of a source DB cluster or DB instance if this DB cluster is to be created as a Read Replica. If DB Cluster is part of a Global Cluster, use the `lifecycle` configuration block `ignore_changes` argument to prevent this provider from showing differences for this argument instead of configuring this value. @@ -1148,6 +1202,12 @@ def __init__(__self__, *, pulumi.set(__self__, "master_username", master_username) if network_type is not None: pulumi.set(__self__, "network_type", network_type) + if performance_insights_enabled is not None: + pulumi.set(__self__, "performance_insights_enabled", performance_insights_enabled) + if performance_insights_kms_key_id is not None: + pulumi.set(__self__, "performance_insights_kms_key_id", performance_insights_kms_key_id) + if performance_insights_retention_period is not None: + pulumi.set(__self__, "performance_insights_retention_period", performance_insights_retention_period) if port is not None: pulumi.set(__self__, "port", port) if preferred_backup_window is not None: @@ -1756,11 +1816,47 @@ def network_type(self) -> Optional[pulumi.Input[str]]: def network_type(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "network_type", value) + @property + @pulumi.getter(name="performanceInsightsEnabled") + def performance_insights_enabled(self) -> Optional[pulumi.Input[bool]]: + """ + Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + """ + return pulumi.get(self, "performance_insights_enabled") + + @performance_insights_enabled.setter + def performance_insights_enabled(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "performance_insights_enabled", value) + + @property + @pulumi.getter(name="performanceInsightsKmsKeyId") + def performance_insights_kms_key_id(self) -> Optional[pulumi.Input[str]]: + """ + Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + """ + return pulumi.get(self, "performance_insights_kms_key_id") + + @performance_insights_kms_key_id.setter + def performance_insights_kms_key_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "performance_insights_kms_key_id", value) + + @property + @pulumi.getter(name="performanceInsightsRetentionPeriod") + def performance_insights_retention_period(self) -> Optional[pulumi.Input[int]]: + """ + Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + """ + return pulumi.get(self, "performance_insights_retention_period") + + @performance_insights_retention_period.setter + def performance_insights_retention_period(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "performance_insights_retention_period", value) + @property @pulumi.getter def port(self) -> Optional[pulumi.Input[int]]: """ - Port on which the DB accepts connections + Port on which the DB accepts connections. """ return pulumi.get(self, "port") @@ -1772,7 +1868,7 @@ def port(self, value: Optional[pulumi.Input[int]]): @pulumi.getter(name="preferredBackupWindow") def preferred_backup_window(self) -> Optional[pulumi.Input[str]]: """ - Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. """ return pulumi.get(self, "preferred_backup_window") @@ -1784,7 +1880,7 @@ def preferred_backup_window(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="preferredMaintenanceWindow") def preferred_maintenance_window(self) -> Optional[pulumi.Input[str]]: """ - Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` """ return pulumi.get(self, "preferred_maintenance_window") @@ -2005,6 +2101,9 @@ def __init__(__self__, master_user_secret_kms_key_id: Optional[pulumi.Input[str]] = None, master_username: Optional[pulumi.Input[str]] = None, network_type: Optional[pulumi.Input[str]] = None, + performance_insights_enabled: Optional[pulumi.Input[bool]] = None, + performance_insights_kms_key_id: Optional[pulumi.Input[str]] = None, + performance_insights_retention_period: Optional[pulumi.Input[int]] = None, port: Optional[pulumi.Input[int]] = None, preferred_backup_window: Optional[pulumi.Input[str]] = None, preferred_maintenance_window: Optional[pulumi.Input[str]] = None, @@ -2272,9 +2371,12 @@ def __init__(__self__, :param pulumi.Input[str] master_user_secret_kms_key_id: Amazon Web Services KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key. To use a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN. If not specified, the default KMS key for your Amazon Web Services account is used. :param pulumi.Input[str] master_username: Username for the master DB user. Please refer to the [RDS Naming Constraints](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints). This argument does not support in-place updates and cannot be changed during a restore from snapshot. :param pulumi.Input[str] network_type: Network type of the cluster. Valid values: `IPV4`, `DUAL`. - :param pulumi.Input[int] port: Port on which the DB accepts connections - :param pulumi.Input[str] preferred_backup_window: Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 - :param pulumi.Input[str] preferred_maintenance_window: Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + :param pulumi.Input[bool] performance_insights_enabled: Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + :param pulumi.Input[str] performance_insights_kms_key_id: Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + :param pulumi.Input[int] performance_insights_retention_period: Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + :param pulumi.Input[int] port: Port on which the DB accepts connections. + :param pulumi.Input[str] preferred_backup_window: Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. + :param pulumi.Input[str] preferred_maintenance_window: Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` :param pulumi.Input[str] replication_source_identifier: ARN of a source DB cluster or DB instance if this DB cluster is to be created as a Read Replica. If DB Cluster is part of a Global Cluster, use the `lifecycle` configuration block `ignore_changes` argument to prevent this provider from showing differences for this argument instead of configuring this value. :param pulumi.Input[Union['ClusterRestoreToPointInTimeArgs', 'ClusterRestoreToPointInTimeArgsDict']] restore_to_point_in_time: Nested attribute for [point in time restore](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-pitr.html). More details below. :param pulumi.Input[Union['ClusterScalingConfigurationArgs', 'ClusterScalingConfigurationArgsDict']] scaling_configuration: Nested attribute with scaling properties. Only valid when `engine_mode` is set to `serverless`. More details below. @@ -2551,6 +2653,9 @@ def _internal_init(__self__, master_user_secret_kms_key_id: Optional[pulumi.Input[str]] = None, master_username: Optional[pulumi.Input[str]] = None, network_type: Optional[pulumi.Input[str]] = None, + performance_insights_enabled: Optional[pulumi.Input[bool]] = None, + performance_insights_kms_key_id: Optional[pulumi.Input[str]] = None, + performance_insights_retention_period: Optional[pulumi.Input[int]] = None, port: Optional[pulumi.Input[int]] = None, preferred_backup_window: Optional[pulumi.Input[str]] = None, preferred_maintenance_window: Optional[pulumi.Input[str]] = None, @@ -2617,6 +2722,9 @@ def _internal_init(__self__, __props__.__dict__["master_user_secret_kms_key_id"] = master_user_secret_kms_key_id __props__.__dict__["master_username"] = master_username __props__.__dict__["network_type"] = network_type + __props__.__dict__["performance_insights_enabled"] = performance_insights_enabled + __props__.__dict__["performance_insights_kms_key_id"] = performance_insights_kms_key_id + __props__.__dict__["performance_insights_retention_period"] = performance_insights_retention_period __props__.__dict__["port"] = port __props__.__dict__["preferred_backup_window"] = preferred_backup_window __props__.__dict__["preferred_maintenance_window"] = preferred_maintenance_window @@ -2700,6 +2808,9 @@ def get(resource_name: str, master_user_secrets: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ClusterMasterUserSecretArgs', 'ClusterMasterUserSecretArgsDict']]]]] = None, master_username: Optional[pulumi.Input[str]] = None, network_type: Optional[pulumi.Input[str]] = None, + performance_insights_enabled: Optional[pulumi.Input[bool]] = None, + performance_insights_kms_key_id: Optional[pulumi.Input[str]] = None, + performance_insights_retention_period: Optional[pulumi.Input[int]] = None, port: Optional[pulumi.Input[int]] = None, preferred_backup_window: Optional[pulumi.Input[str]] = None, preferred_maintenance_window: Optional[pulumi.Input[str]] = None, @@ -2777,9 +2888,12 @@ def get(resource_name: str, :param pulumi.Input[Sequence[pulumi.Input[Union['ClusterMasterUserSecretArgs', 'ClusterMasterUserSecretArgsDict']]]] master_user_secrets: Block that specifies the master user secret. Only available when `manage_master_user_password` is set to true. Documented below. :param pulumi.Input[str] master_username: Username for the master DB user. Please refer to the [RDS Naming Constraints](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints). This argument does not support in-place updates and cannot be changed during a restore from snapshot. :param pulumi.Input[str] network_type: Network type of the cluster. Valid values: `IPV4`, `DUAL`. - :param pulumi.Input[int] port: Port on which the DB accepts connections - :param pulumi.Input[str] preferred_backup_window: Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 - :param pulumi.Input[str] preferred_maintenance_window: Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + :param pulumi.Input[bool] performance_insights_enabled: Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + :param pulumi.Input[str] performance_insights_kms_key_id: Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + :param pulumi.Input[int] performance_insights_retention_period: Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + :param pulumi.Input[int] port: Port on which the DB accepts connections. + :param pulumi.Input[str] preferred_backup_window: Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. + :param pulumi.Input[str] preferred_maintenance_window: Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` :param pulumi.Input[str] reader_endpoint: Read-only endpoint for the Aurora cluster, automatically load-balanced across replicas :param pulumi.Input[str] replication_source_identifier: ARN of a source DB cluster or DB instance if this DB cluster is to be created as a Read Replica. If DB Cluster is part of a Global Cluster, use the `lifecycle` configuration block `ignore_changes` argument to prevent this provider from showing differences for this argument instead of configuring this value. @@ -2846,6 +2960,9 @@ def get(resource_name: str, __props__.__dict__["master_user_secrets"] = master_user_secrets __props__.__dict__["master_username"] = master_username __props__.__dict__["network_type"] = network_type + __props__.__dict__["performance_insights_enabled"] = performance_insights_enabled + __props__.__dict__["performance_insights_kms_key_id"] = performance_insights_kms_key_id + __props__.__dict__["performance_insights_retention_period"] = performance_insights_retention_period __props__.__dict__["port"] = port __props__.__dict__["preferred_backup_window"] = preferred_backup_window __props__.__dict__["preferred_maintenance_window"] = preferred_maintenance_window @@ -3247,11 +3364,35 @@ def network_type(self) -> pulumi.Output[str]: """ return pulumi.get(self, "network_type") + @property + @pulumi.getter(name="performanceInsightsEnabled") + def performance_insights_enabled(self) -> pulumi.Output[Optional[bool]]: + """ + Valid only for Non-Aurora Multi-AZ DB Clusters. Enables Performance Insights for the RDS Cluster + """ + return pulumi.get(self, "performance_insights_enabled") + + @property + @pulumi.getter(name="performanceInsightsKmsKeyId") + def performance_insights_kms_key_id(self) -> pulumi.Output[str]: + """ + Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the KMS Key ID to encrypt Performance Insights data. If not specified, the default RDS KMS key will be used (`aws/rds`). + """ + return pulumi.get(self, "performance_insights_kms_key_id") + + @property + @pulumi.getter(name="performanceInsightsRetentionPeriod") + def performance_insights_retention_period(self) -> pulumi.Output[int]: + """ + Valid only for Non-Aurora Multi-AZ DB Clusters. Specifies the amount of time to retain performance insights data for. Defaults to 7 days if Performance Insights are enabled. Valid values are `7`, `month * 31` (where month is a number of months from 1-23), and `731`. See [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.cost.html) for more information on retention periods. + """ + return pulumi.get(self, "performance_insights_retention_period") + @property @pulumi.getter def port(self) -> pulumi.Output[int]: """ - Port on which the DB accepts connections + Port on which the DB accepts connections. """ return pulumi.get(self, "port") @@ -3259,7 +3400,7 @@ def port(self) -> pulumi.Output[int]: @pulumi.getter(name="preferredBackupWindow") def preferred_backup_window(self) -> pulumi.Output[str]: """ - Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00 + Daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter.Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per region, e.g. `04:00-09:00`. """ return pulumi.get(self, "preferred_backup_window") @@ -3267,7 +3408,7 @@ def preferred_backup_window(self) -> pulumi.Output[str]: @pulumi.getter(name="preferredMaintenanceWindow") def preferred_maintenance_window(self) -> pulumi.Output[str]: """ - Weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30 + Weekly time range during which system maintenance can occur, in (UTC) e.g., `wed:04:00-wed:04:30` """ return pulumi.get(self, "preferred_maintenance_window") diff --git a/sdk/python/pulumi_aws/rds/instance.py b/sdk/python/pulumi_aws/rds/instance.py index 552c6a4c43e..1388acda19d 100644 --- a/sdk/python/pulumi_aws/rds/instance.py +++ b/sdk/python/pulumi_aws/rds/instance.py @@ -88,6 +88,7 @@ def __init__(__self__, *, storage_type: Optional[pulumi.Input[Union[str, 'StorageType']]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, timezone: Optional[pulumi.Input[str]] = None, + upgrade_storage_config: Optional[pulumi.Input[bool]] = None, username: Optional[pulumi.Input[str]] = None, vpc_security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): """ @@ -237,6 +238,7 @@ def __init__(__self__, *, creation. See [MSSQL User Guide](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone) for more information. + :param pulumi.Input[bool] upgrade_storage_config: Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. :param pulumi.Input[str] username: (Required unless a `snapshot_identifier` or `replicate_source_db` is provided) Username for the master DB user. Cannot be specified for a replica. :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_security_group_ids: List of VPC security groups to @@ -376,6 +378,8 @@ def __init__(__self__, *, pulumi.set(__self__, "tags", tags) if timezone is not None: pulumi.set(__self__, "timezone", timezone) + if upgrade_storage_config is not None: + pulumi.set(__self__, "upgrade_storage_config", upgrade_storage_config) if username is not None: pulumi.set(__self__, "username", username) if vpc_security_group_ids is not None: @@ -1251,6 +1255,18 @@ def timezone(self) -> Optional[pulumi.Input[str]]: def timezone(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "timezone", value) + @property + @pulumi.getter(name="upgradeStorageConfig") + def upgrade_storage_config(self) -> Optional[pulumi.Input[bool]]: + """ + Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + """ + return pulumi.get(self, "upgrade_storage_config") + + @upgrade_storage_config.setter + def upgrade_storage_config(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "upgrade_storage_config", value) + @property @pulumi.getter def username(self) -> Optional[pulumi.Input[str]]: @@ -1359,6 +1375,7 @@ def __init__(__self__, *, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, timezone: Optional[pulumi.Input[str]] = None, + upgrade_storage_config: Optional[pulumi.Input[bool]] = None, username: Optional[pulumi.Input[str]] = None, vpc_security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): """ @@ -1519,6 +1536,7 @@ def __init__(__self__, *, creation. See [MSSQL User Guide](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone) for more information. + :param pulumi.Input[bool] upgrade_storage_config: Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. :param pulumi.Input[str] username: (Required unless a `snapshot_identifier` or `replicate_source_db` is provided) Username for the master DB user. Cannot be specified for a replica. :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_security_group_ids: List of VPC security groups to @@ -1686,6 +1704,8 @@ def __init__(__self__, *, pulumi.set(__self__, "tags_all", tags_all) if timezone is not None: pulumi.set(__self__, "timezone", timezone) + if upgrade_storage_config is not None: + pulumi.set(__self__, "upgrade_storage_config", upgrade_storage_config) if username is not None: pulumi.set(__self__, "username", username) if vpc_security_group_ids is not None: @@ -2703,6 +2723,18 @@ def timezone(self) -> Optional[pulumi.Input[str]]: def timezone(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "timezone", value) + @property + @pulumi.getter(name="upgradeStorageConfig") + def upgrade_storage_config(self) -> Optional[pulumi.Input[bool]]: + """ + Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + """ + return pulumi.get(self, "upgrade_storage_config") + + @upgrade_storage_config.setter + def upgrade_storage_config(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "upgrade_storage_config", value) + @property @pulumi.getter def username(self) -> Optional[pulumi.Input[str]]: @@ -2801,6 +2833,7 @@ def __init__(__self__, storage_type: Optional[pulumi.Input[Union[str, 'StorageType']]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, timezone: Optional[pulumi.Input[str]] = None, + upgrade_storage_config: Optional[pulumi.Input[bool]] = None, username: Optional[pulumi.Input[str]] = None, vpc_security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, __props__=None): @@ -3204,6 +3237,7 @@ def __init__(__self__, creation. See [MSSQL User Guide](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone) for more information. + :param pulumi.Input[bool] upgrade_storage_config: Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. :param pulumi.Input[str] username: (Required unless a `snapshot_identifier` or `replicate_source_db` is provided) Username for the master DB user. Cannot be specified for a replica. :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_security_group_ids: List of VPC security groups to @@ -3549,6 +3583,7 @@ def _internal_init(__self__, storage_type: Optional[pulumi.Input[Union[str, 'StorageType']]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, timezone: Optional[pulumi.Input[str]] = None, + upgrade_storage_config: Optional[pulumi.Input[bool]] = None, username: Optional[pulumi.Input[str]] = None, vpc_security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, __props__=None): @@ -3628,6 +3663,7 @@ def _internal_init(__self__, __props__.__dict__["storage_type"] = storage_type __props__.__dict__["tags"] = tags __props__.__dict__["timezone"] = timezone + __props__.__dict__["upgrade_storage_config"] = upgrade_storage_config __props__.__dict__["username"] = username __props__.__dict__["vpc_security_group_ids"] = vpc_security_group_ids __props__.__dict__["address"] = None @@ -3732,6 +3768,7 @@ def get(resource_name: str, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, timezone: Optional[pulumi.Input[str]] = None, + upgrade_storage_config: Optional[pulumi.Input[bool]] = None, username: Optional[pulumi.Input[str]] = None, vpc_security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None) -> 'Instance': """ @@ -3897,6 +3934,7 @@ def get(resource_name: str, creation. See [MSSQL User Guide](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone) for more information. + :param pulumi.Input[bool] upgrade_storage_config: Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. :param pulumi.Input[str] username: (Required unless a `snapshot_identifier` or `replicate_source_db` is provided) Username for the master DB user. Cannot be specified for a replica. :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_security_group_ids: List of VPC security groups to @@ -3984,6 +4022,7 @@ def get(resource_name: str, __props__.__dict__["tags"] = tags __props__.__dict__["tags_all"] = tags_all __props__.__dict__["timezone"] = timezone + __props__.__dict__["upgrade_storage_config"] = upgrade_storage_config __props__.__dict__["username"] = username __props__.__dict__["vpc_security_group_ids"] = vpc_security_group_ids return Instance(resource_name, opts=opts, __props__=__props__) @@ -4688,6 +4727,14 @@ def timezone(self) -> pulumi.Output[str]: """ return pulumi.get(self, "timezone") + @property + @pulumi.getter(name="upgradeStorageConfig") + def upgrade_storage_config(self) -> pulumi.Output[Optional[bool]]: + """ + Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`. + """ + return pulumi.get(self, "upgrade_storage_config") + @property @pulumi.getter def username(self) -> pulumi.Output[str]: diff --git a/sdk/python/pulumi_aws/rds/outputs.py b/sdk/python/pulumi_aws/rds/outputs.py index 093d70c577c..8638541f4f7 100644 --- a/sdk/python/pulumi_aws/rds/outputs.py +++ b/sdk/python/pulumi_aws/rds/outputs.py @@ -175,12 +175,14 @@ class ClusterRestoreToPointInTime(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "sourceClusterIdentifier": - suggest = "source_cluster_identifier" - elif key == "restoreToTime": + if key == "restoreToTime": suggest = "restore_to_time" elif key == "restoreType": suggest = "restore_type" + elif key == "sourceClusterIdentifier": + suggest = "source_cluster_identifier" + elif key == "sourceClusterResourceId": + suggest = "source_cluster_resource_id" elif key == "useLatestRestorableTime": suggest = "use_latest_restorable_time" @@ -196,33 +198,30 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, - source_cluster_identifier: str, restore_to_time: Optional[str] = None, restore_type: Optional[str] = None, + source_cluster_identifier: Optional[str] = None, + source_cluster_resource_id: Optional[str] = None, use_latest_restorable_time: Optional[bool] = None): """ - :param str source_cluster_identifier: Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. :param str restore_to_time: Date and time in UTC format to restore the database cluster to. Conflicts with `use_latest_restorable_time`. :param str restore_type: Type of restore to be performed. Valid options are `full-copy` (default) and `copy-on-write`. + :param str source_cluster_identifier: Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. + :param str source_cluster_resource_id: Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. :param bool use_latest_restorable_time: Set to true to restore the database cluster to the latest restorable backup time. Defaults to false. Conflicts with `restore_to_time`. """ - pulumi.set(__self__, "source_cluster_identifier", source_cluster_identifier) if restore_to_time is not None: pulumi.set(__self__, "restore_to_time", restore_to_time) if restore_type is not None: pulumi.set(__self__, "restore_type", restore_type) + if source_cluster_identifier is not None: + pulumi.set(__self__, "source_cluster_identifier", source_cluster_identifier) + if source_cluster_resource_id is not None: + pulumi.set(__self__, "source_cluster_resource_id", source_cluster_resource_id) if use_latest_restorable_time is not None: pulumi.set(__self__, "use_latest_restorable_time", use_latest_restorable_time) - @property - @pulumi.getter(name="sourceClusterIdentifier") - def source_cluster_identifier(self) -> str: - """ - Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. - """ - return pulumi.get(self, "source_cluster_identifier") - @property @pulumi.getter(name="restoreToTime") def restore_to_time(self) -> Optional[str]: @@ -240,6 +239,22 @@ def restore_type(self) -> Optional[str]: """ return pulumi.get(self, "restore_type") + @property + @pulumi.getter(name="sourceClusterIdentifier") + def source_cluster_identifier(self) -> Optional[str]: + """ + Identifier of the source database cluster from which to restore. When restoring from a cluster in another AWS account, the identifier is the ARN of that cluster. + """ + return pulumi.get(self, "source_cluster_identifier") + + @property + @pulumi.getter(name="sourceClusterResourceId") + def source_cluster_resource_id(self) -> Optional[str]: + """ + Cluster resource ID of the source database cluster from which to restore. To be used for restoring a deleted cluster in the same account which still has a retained automatic backup available. + """ + return pulumi.get(self, "source_cluster_resource_id") + @property @pulumi.getter(name="useLatestRestorableTime") def use_latest_restorable_time(self) -> Optional[bool]: diff --git a/sdk/python/pulumi_aws/s3/bucket_notification.py b/sdk/python/pulumi_aws/s3/bucket_notification.py index 0a8e269089d..33433cb9e88 100644 --- a/sdk/python/pulumi_aws/s3/bucket_notification.py +++ b/sdk/python/pulumi_aws/s3/bucket_notification.py @@ -215,7 +215,7 @@ def __init__(__self__, """ Manages a S3 Bucket Notification Configuration. For additional information, see the [Configuring S3 Event Notifications section in the Amazon S3 Developer Guide](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). - > **NOTE:** S3 Buckets only support a single notification configuration. Declaring multiple `s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. See the example "Trigger multiple Lambda functions" for an option. + > **NOTE:** S3 Buckets only support a single notification configuration resource. Declaring multiple `s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. This resource will overwrite any existing event notifications configured for the S3 bucket it's associated with. See the example "Trigger multiple Lambda functions" for an option of how to configure multiple triggers within this resource. > This resource cannot be used with S3 directory buckets. @@ -474,7 +474,7 @@ def __init__(__self__, """ Manages a S3 Bucket Notification Configuration. For additional information, see the [Configuring S3 Event Notifications section in the Amazon S3 Developer Guide](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). - > **NOTE:** S3 Buckets only support a single notification configuration. Declaring multiple `s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. See the example "Trigger multiple Lambda functions" for an option. + > **NOTE:** S3 Buckets only support a single notification configuration resource. Declaring multiple `s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. This resource will overwrite any existing event notifications configured for the S3 bucket it's associated with. See the example "Trigger multiple Lambda functions" for an option of how to configure multiple triggers within this resource. > This resource cannot be used with S3 directory buckets. diff --git a/sdk/python/pulumi_aws/sagemaker/get_prebuilt_ecr_image.py b/sdk/python/pulumi_aws/sagemaker/get_prebuilt_ecr_image.py index 54149601355..ecee139ec4c 100644 --- a/sdk/python/pulumi_aws/sagemaker/get_prebuilt_ecr_image.py +++ b/sdk/python/pulumi_aws/sagemaker/get_prebuilt_ecr_image.py @@ -135,7 +135,7 @@ def get_prebuilt_ecr_image(dns_suffix: Optional[str] = None, :param str dns_suffix: DNS suffix to use in the registry path. If not specified, the AWS provider sets it to the DNS suffix for the current region. :param str image_tag: Image tag for the Docker image. If not specified, the AWS provider sets the value to `1`, which for many repositories indicates the latest version. Some repositories, such as XGBoost, do not support `1` or `latest` and specific version must be used. :param str region: Region to use in the registry path. If not specified, the AWS provider sets it to the current region. - :param str repository_name: Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + :param str repository_name: Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. """ __args__ = dict() __args__['dnsSuffix'] = dns_suffix @@ -182,6 +182,6 @@ def get_prebuilt_ecr_image_output(dns_suffix: Optional[pulumi.Input[Optional[str :param str dns_suffix: DNS suffix to use in the registry path. If not specified, the AWS provider sets it to the DNS suffix for the current region. :param str image_tag: Image tag for the Docker image. If not specified, the AWS provider sets the value to `1`, which for many repositories indicates the latest version. Some repositories, such as XGBoost, do not support `1` or `latest` and specific version must be used. :param str region: Region to use in the registry path. If not specified, the AWS provider sets it to the current region. - :param str repository_name: Name of the repository, which is generally the algorithm or library. Values include `blazingtext`, `factorization-machines`, `forecasting-deepar`, `image-classification`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference-eia`, `mxnet-inference`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference-eia`, `pytorch-inference`, `pytorch-training`, `randomcutforest`, `sagemaker-scikit-learn`, `sagemaker-sparkml-serving`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `tensorflow-inference-eia`, `tensorflow-inference`, `tensorflow-training`, `huggingface-tensorflow-training`, `huggingface-tensorflow-inference`, `huggingface-pytorch-training`, and `huggingface-pytorch-inference`. + :param str repository_name: Name of the repository, which is generally the algorithm or library. Values include `autogluon-inference`, `autogluon-training`, `blazingtext`, `djl-inference`, `factorization-machines`, `forecasting-deepar`, `huggingface-pytorch-inference`, `huggingface-pytorch-inference-neuron`, `huggingface-pytorch-inference-neuronx`, `huggingface-pytorch-tgi-inference`, `huggingface-pytorch-training`, `huggingface-pytorch-training-neuronx`, `huggingface-pytorch-trcomp-training`, `huggingface-tensorflow-inference`, `huggingface-tensorflow-training`, `huggingface-tensorflow-trcomp-training`, `image-classification`, `image-classification-neo`, `ipinsights`, `kmeans`, `knn`, `lda`, `linear-learner`, `mxnet-inference`, `mxnet-inference-eia`, `mxnet-training`, `ntm`, `object-detection`, `object2vec`, `pca`, `pytorch-inference`, `pytorch-inference-eia`, `pytorch-inference-graviton`, `pytorch-inference-neuronx`, `pytorch-training`, `pytorch-training-neuronx`, `pytorch-trcomp-training`, `randomcutforest`, `sagemaker-base-python`, `sagemaker-chainer`, `sagemaker-clarify-processing`, `sagemaker-data-wrangler-container`, `sagemaker-debugger-rules`, `sagemaker-geospatial-v1-0`, `sagemaker-inference-mxnet`, `sagemaker-inference-pytorch`, `sagemaker-inference-tensorflow`, `sagemaker-model-monitor-analyzer`, `sagemaker-mxnet`, `sagemaker-mxnet-eia`, `sagemaker-mxnet-serving`, `sagemaker-mxnet-serving-eia`, `sagemaker-neo-mxnet`, `sagemaker-neo-pytorch`, `sagemaker-neo-tensorflow`, `sagemaker-pytorch`, `sagemaker-rl-coach-container`, `sagemaker-rl-mxnet`, `sagemaker-rl-ray-container`, `sagemaker-rl-tensorflow`, `sagemaker-rl-vw-container`, `sagemaker-scikit-learn`, `sagemaker-spark-processing`, `sagemaker-sparkml-serving`, `sagemaker-tensorflow`, `sagemaker-tensorflow-eia`, `sagemaker-tensorflow-scriptmode`, `sagemaker-tensorflow-serving`, `sagemaker-tensorflow-serving-eia`, `sagemaker-tritonserver`, `sagemaker-xgboost`, `semantic-segmentation`, `seq2seq`, `stabilityai-pytorch-inference`, `tei`, `tei-cpu`, `tensorflow-inference`, `tensorflow-inference-eia`, `tensorflow-inference-graviton`, `tensorflow-training`, and `xgboost-neo`. """ ... diff --git a/sdk/python/pulumi_aws/sfn/_inputs.py b/sdk/python/pulumi_aws/sfn/_inputs.py index d563d53a85c..aa9a7edf5b6 100644 --- a/sdk/python/pulumi_aws/sfn/_inputs.py +++ b/sdk/python/pulumi_aws/sfn/_inputs.py @@ -15,8 +15,12 @@ from .. import _utilities __all__ = [ + 'ActivityEncryptionConfigurationArgs', + 'ActivityEncryptionConfigurationArgsDict', 'AliasRoutingConfigurationArgs', 'AliasRoutingConfigurationArgsDict', + 'StateMachineEncryptionConfigurationArgs', + 'StateMachineEncryptionConfigurationArgsDict', 'StateMachineLoggingConfigurationArgs', 'StateMachineLoggingConfigurationArgsDict', 'StateMachineTracingConfigurationArgs', @@ -25,6 +29,78 @@ MYPY = False +if not MYPY: + class ActivityEncryptionConfigurationArgsDict(TypedDict): + kms_data_key_reuse_period_seconds: NotRequired[pulumi.Input[int]] + """ + Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + """ + kms_key_id: NotRequired[pulumi.Input[str]] + """ + The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + """ + type: NotRequired[pulumi.Input[str]] + """ + The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + """ +elif False: + ActivityEncryptionConfigurationArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class ActivityEncryptionConfigurationArgs: + def __init__(__self__, *, + kms_data_key_reuse_period_seconds: Optional[pulumi.Input[int]] = None, + kms_key_id: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[int] kms_data_key_reuse_period_seconds: Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + :param pulumi.Input[str] kms_key_id: The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + :param pulumi.Input[str] type: The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + """ + if kms_data_key_reuse_period_seconds is not None: + pulumi.set(__self__, "kms_data_key_reuse_period_seconds", kms_data_key_reuse_period_seconds) + if kms_key_id is not None: + pulumi.set(__self__, "kms_key_id", kms_key_id) + if type is not None: + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter(name="kmsDataKeyReusePeriodSeconds") + def kms_data_key_reuse_period_seconds(self) -> Optional[pulumi.Input[int]]: + """ + Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + """ + return pulumi.get(self, "kms_data_key_reuse_period_seconds") + + @kms_data_key_reuse_period_seconds.setter + def kms_data_key_reuse_period_seconds(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "kms_data_key_reuse_period_seconds", value) + + @property + @pulumi.getter(name="kmsKeyId") + def kms_key_id(self) -> Optional[pulumi.Input[str]]: + """ + The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + """ + return pulumi.get(self, "kms_key_id") + + @kms_key_id.setter + def kms_key_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "kms_key_id", value) + + @property + @pulumi.getter + def type(self) -> Optional[pulumi.Input[str]]: + """ + The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "type", value) + + if not MYPY: class AliasRoutingConfigurationArgsDict(TypedDict): state_machine_version_arn: pulumi.Input[str] @@ -75,6 +151,78 @@ def weight(self, value: pulumi.Input[int]): pulumi.set(self, "weight", value) +if not MYPY: + class StateMachineEncryptionConfigurationArgsDict(TypedDict): + kms_data_key_reuse_period_seconds: NotRequired[pulumi.Input[int]] + """ + Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + """ + kms_key_id: NotRequired[pulumi.Input[str]] + """ + The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + """ + type: NotRequired[pulumi.Input[str]] + """ + The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + """ +elif False: + StateMachineEncryptionConfigurationArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class StateMachineEncryptionConfigurationArgs: + def __init__(__self__, *, + kms_data_key_reuse_period_seconds: Optional[pulumi.Input[int]] = None, + kms_key_id: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[int] kms_data_key_reuse_period_seconds: Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + :param pulumi.Input[str] kms_key_id: The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + :param pulumi.Input[str] type: The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + """ + if kms_data_key_reuse_period_seconds is not None: + pulumi.set(__self__, "kms_data_key_reuse_period_seconds", kms_data_key_reuse_period_seconds) + if kms_key_id is not None: + pulumi.set(__self__, "kms_key_id", kms_key_id) + if type is not None: + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter(name="kmsDataKeyReusePeriodSeconds") + def kms_data_key_reuse_period_seconds(self) -> Optional[pulumi.Input[int]]: + """ + Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + """ + return pulumi.get(self, "kms_data_key_reuse_period_seconds") + + @kms_data_key_reuse_period_seconds.setter + def kms_data_key_reuse_period_seconds(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "kms_data_key_reuse_period_seconds", value) + + @property + @pulumi.getter(name="kmsKeyId") + def kms_key_id(self) -> Optional[pulumi.Input[str]]: + """ + The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + """ + return pulumi.get(self, "kms_key_id") + + @kms_key_id.setter + def kms_key_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "kms_key_id", value) + + @property + @pulumi.getter + def type(self) -> Optional[pulumi.Input[str]]: + """ + The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "type", value) + + if not MYPY: class StateMachineLoggingConfigurationArgsDict(TypedDict): include_execution_data: NotRequired[pulumi.Input[bool]] diff --git a/sdk/python/pulumi_aws/sfn/activity.py b/sdk/python/pulumi_aws/sfn/activity.py index 2b2abb9faac..55919843ad3 100644 --- a/sdk/python/pulumi_aws/sfn/activity.py +++ b/sdk/python/pulumi_aws/sfn/activity.py @@ -13,24 +13,42 @@ else: from typing_extensions import NotRequired, TypedDict, TypeAlias from .. import _utilities +from . import outputs +from ._inputs import * __all__ = ['ActivityArgs', 'Activity'] @pulumi.input_type class ActivityArgs: def __init__(__self__, *, + encryption_configuration: Optional[pulumi.Input['ActivityEncryptionConfigurationArgs']] = None, name: Optional[pulumi.Input[str]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None): """ The set of arguments for constructing a Activity resource. + :param pulumi.Input['ActivityEncryptionConfigurationArgs'] encryption_configuration: Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. :param pulumi.Input[str] name: The name of the activity to create. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. .If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. """ + if encryption_configuration is not None: + pulumi.set(__self__, "encryption_configuration", encryption_configuration) if name is not None: pulumi.set(__self__, "name", name) if tags is not None: pulumi.set(__self__, "tags", tags) + @property + @pulumi.getter(name="encryptionConfiguration") + def encryption_configuration(self) -> Optional[pulumi.Input['ActivityEncryptionConfigurationArgs']]: + """ + Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + """ + return pulumi.get(self, "encryption_configuration") + + @encryption_configuration.setter + def encryption_configuration(self, value: Optional[pulumi.Input['ActivityEncryptionConfigurationArgs']]): + pulumi.set(self, "encryption_configuration", value) + @property @pulumi.getter def name(self) -> Optional[pulumi.Input[str]]: @@ -60,18 +78,22 @@ def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): class _ActivityState: def __init__(__self__, *, creation_date: Optional[pulumi.Input[str]] = None, + encryption_configuration: Optional[pulumi.Input['ActivityEncryptionConfigurationArgs']] = None, name: Optional[pulumi.Input[str]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None): """ Input properties used for looking up and filtering Activity resources. :param pulumi.Input[str] creation_date: The date the activity was created. + :param pulumi.Input['ActivityEncryptionConfigurationArgs'] encryption_configuration: Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. :param pulumi.Input[str] name: The name of the activity to create. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. .If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags_all: A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. """ if creation_date is not None: pulumi.set(__self__, "creation_date", creation_date) + if encryption_configuration is not None: + pulumi.set(__self__, "encryption_configuration", encryption_configuration) if name is not None: pulumi.set(__self__, "name", name) if tags is not None: @@ -94,6 +116,18 @@ def creation_date(self) -> Optional[pulumi.Input[str]]: def creation_date(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "creation_date", value) + @property + @pulumi.getter(name="encryptionConfiguration") + def encryption_configuration(self) -> Optional[pulumi.Input['ActivityEncryptionConfigurationArgs']]: + """ + Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + """ + return pulumi.get(self, "encryption_configuration") + + @encryption_configuration.setter + def encryption_configuration(self, value: Optional[pulumi.Input['ActivityEncryptionConfigurationArgs']]): + pulumi.set(self, "encryption_configuration", value) + @property @pulumi.getter def name(self) -> Optional[pulumi.Input[str]]: @@ -137,6 +171,7 @@ class Activity(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, + encryption_configuration: Optional[pulumi.Input[Union['ActivityEncryptionConfigurationArgs', 'ActivityEncryptionConfigurationArgsDict']]] = None, name: Optional[pulumi.Input[str]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, __props__=None): @@ -145,6 +180,8 @@ def __init__(__self__, ## Example Usage + ### Basic + ```python import pulumi import pulumi_aws as aws @@ -152,6 +189,23 @@ def __init__(__self__, sfn_activity = aws.sfn.Activity("sfn_activity", name="my-activity") ``` + ### Encryption + + > *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. + + ```python + import pulumi + import pulumi_aws as aws + + sfn_activity = aws.sfn.Activity("sfn_activity", + name="my-activity", + encryption_configuration={ + "kms_key_id": kms_key_for_sfn["arn"], + "type": "CUSTOMER_MANAGED_KMS_KEY", + "kms_data_key_reuse_period_seconds": 900, + }) + ``` + ## Import Using `pulumi import`, import activities using the `arn`. For example: @@ -162,6 +216,7 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[Union['ActivityEncryptionConfigurationArgs', 'ActivityEncryptionConfigurationArgsDict']] encryption_configuration: Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. :param pulumi.Input[str] name: The name of the activity to create. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. .If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. """ @@ -176,6 +231,8 @@ def __init__(__self__, ## Example Usage + ### Basic + ```python import pulumi import pulumi_aws as aws @@ -183,6 +240,23 @@ def __init__(__self__, sfn_activity = aws.sfn.Activity("sfn_activity", name="my-activity") ``` + ### Encryption + + > *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. + + ```python + import pulumi + import pulumi_aws as aws + + sfn_activity = aws.sfn.Activity("sfn_activity", + name="my-activity", + encryption_configuration={ + "kms_key_id": kms_key_for_sfn["arn"], + "type": "CUSTOMER_MANAGED_KMS_KEY", + "kms_data_key_reuse_period_seconds": 900, + }) + ``` + ## Import Using `pulumi import`, import activities using the `arn`. For example: @@ -206,6 +280,7 @@ def __init__(__self__, resource_name: str, *args, **kwargs): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, + encryption_configuration: Optional[pulumi.Input[Union['ActivityEncryptionConfigurationArgs', 'ActivityEncryptionConfigurationArgsDict']]] = None, name: Optional[pulumi.Input[str]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, __props__=None): @@ -217,6 +292,7 @@ def _internal_init(__self__, raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') __props__ = ActivityArgs.__new__(ActivityArgs) + __props__.__dict__["encryption_configuration"] = encryption_configuration __props__.__dict__["name"] = name __props__.__dict__["tags"] = tags __props__.__dict__["creation_date"] = None @@ -232,6 +308,7 @@ def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, creation_date: Optional[pulumi.Input[str]] = None, + encryption_configuration: Optional[pulumi.Input[Union['ActivityEncryptionConfigurationArgs', 'ActivityEncryptionConfigurationArgsDict']]] = None, name: Optional[pulumi.Input[str]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None) -> 'Activity': @@ -243,6 +320,7 @@ def get(resource_name: str, :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] creation_date: The date the activity was created. + :param pulumi.Input[Union['ActivityEncryptionConfigurationArgs', 'ActivityEncryptionConfigurationArgsDict']] encryption_configuration: Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. :param pulumi.Input[str] name: The name of the activity to create. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. .If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags_all: A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. @@ -252,6 +330,7 @@ def get(resource_name: str, __props__ = _ActivityState.__new__(_ActivityState) __props__.__dict__["creation_date"] = creation_date + __props__.__dict__["encryption_configuration"] = encryption_configuration __props__.__dict__["name"] = name __props__.__dict__["tags"] = tags __props__.__dict__["tags_all"] = tags_all @@ -265,6 +344,14 @@ def creation_date(self) -> pulumi.Output[str]: """ return pulumi.get(self, "creation_date") + @property + @pulumi.getter(name="encryptionConfiguration") + def encryption_configuration(self) -> pulumi.Output['outputs.ActivityEncryptionConfiguration']: + """ + Defines what encryption configuration is used to encrypt data in the Activity. For more information 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 User Guide. + """ + return pulumi.get(self, "encryption_configuration") + @property @pulumi.getter def name(self) -> pulumi.Output[str]: diff --git a/sdk/python/pulumi_aws/sfn/outputs.py b/sdk/python/pulumi_aws/sfn/outputs.py index 555980732c4..6862df127d8 100644 --- a/sdk/python/pulumi_aws/sfn/outputs.py +++ b/sdk/python/pulumi_aws/sfn/outputs.py @@ -15,12 +15,76 @@ from .. import _utilities __all__ = [ + 'ActivityEncryptionConfiguration', 'AliasRoutingConfiguration', + 'StateMachineEncryptionConfiguration', 'StateMachineLoggingConfiguration', 'StateMachineTracingConfiguration', 'GetAliasRoutingConfigurationResult', ] +@pulumi.output_type +class ActivityEncryptionConfiguration(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "kmsDataKeyReusePeriodSeconds": + suggest = "kms_data_key_reuse_period_seconds" + elif key == "kmsKeyId": + suggest = "kms_key_id" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ActivityEncryptionConfiguration. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ActivityEncryptionConfiguration.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ActivityEncryptionConfiguration.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + kms_data_key_reuse_period_seconds: Optional[int] = None, + kms_key_id: Optional[str] = None, + type: Optional[str] = None): + """ + :param int kms_data_key_reuse_period_seconds: Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + :param str kms_key_id: The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + :param str type: The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + """ + if kms_data_key_reuse_period_seconds is not None: + pulumi.set(__self__, "kms_data_key_reuse_period_seconds", kms_data_key_reuse_period_seconds) + if kms_key_id is not None: + pulumi.set(__self__, "kms_key_id", kms_key_id) + if type is not None: + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter(name="kmsDataKeyReusePeriodSeconds") + def kms_data_key_reuse_period_seconds(self) -> Optional[int]: + """ + Maximum duration for which Activities will reuse data keys. When the period expires, Activities will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply to AWS owned KMS key. + """ + return pulumi.get(self, "kms_data_key_reuse_period_seconds") + + @property + @pulumi.getter(name="kmsKeyId") + def kms_key_id(self) -> Optional[str]: + """ + The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + """ + return pulumi.get(self, "kms_key_id") + + @property + @pulumi.getter + def type(self) -> Optional[str]: + """ + The encryption option specified for the activity. Valid values: `AWS_KMS_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + """ + return pulumi.get(self, "type") + + @pulumi.output_type class AliasRoutingConfiguration(dict): @staticmethod @@ -67,6 +131,68 @@ def weight(self) -> int: return pulumi.get(self, "weight") +@pulumi.output_type +class StateMachineEncryptionConfiguration(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "kmsDataKeyReusePeriodSeconds": + suggest = "kms_data_key_reuse_period_seconds" + elif key == "kmsKeyId": + suggest = "kms_key_id" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in StateMachineEncryptionConfiguration. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + StateMachineEncryptionConfiguration.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + StateMachineEncryptionConfiguration.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + kms_data_key_reuse_period_seconds: Optional[int] = None, + kms_key_id: Optional[str] = None, + type: Optional[str] = None): + """ + :param int kms_data_key_reuse_period_seconds: Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + :param str kms_key_id: The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + :param str type: The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + """ + if kms_data_key_reuse_period_seconds is not None: + pulumi.set(__self__, "kms_data_key_reuse_period_seconds", kms_data_key_reuse_period_seconds) + if kms_key_id is not None: + pulumi.set(__self__, "kms_key_id", kms_key_id) + if type is not None: + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter(name="kmsDataKeyReusePeriodSeconds") + def kms_data_key_reuse_period_seconds(self) -> Optional[int]: + """ + Maximum duration for which Step Functions will reuse data keys. When the period expires, Step Functions will call GenerateDataKey. This setting only applies to customer managed KMS key and does not apply when `type` is `AWS_OWNED_KEY`. + """ + return pulumi.get(self, "kms_data_key_reuse_period_seconds") + + @property + @pulumi.getter(name="kmsKeyId") + def kms_key_id(self) -> Optional[str]: + """ + The alias, alias ARN, key ID, or key ARN of the symmetric encryption KMS key that encrypts the data key. To specify a KMS key in a different AWS account, the customer must use the key ARN or alias ARN. For more information regarding kms_key_id, see [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the KMS documentation. + """ + return pulumi.get(self, "kms_key_id") + + @property + @pulumi.getter + def type(self) -> Optional[str]: + """ + The encryption option specified for the state machine. Valid values: `AWS_OWNED_KEY`, `CUSTOMER_MANAGED_KMS_KEY` + """ + return pulumi.get(self, "type") + + @pulumi.output_type class StateMachineLoggingConfiguration(dict): @staticmethod diff --git a/sdk/python/pulumi_aws/sfn/state_machine.py b/sdk/python/pulumi_aws/sfn/state_machine.py index 729ba3039db..ef038e21248 100644 --- a/sdk/python/pulumi_aws/sfn/state_machine.py +++ b/sdk/python/pulumi_aws/sfn/state_machine.py @@ -23,6 +23,7 @@ class StateMachineArgs: def __init__(__self__, *, definition: pulumi.Input[str], role_arn: pulumi.Input[str], + encryption_configuration: Optional[pulumi.Input['StateMachineEncryptionConfigurationArgs']] = None, logging_configuration: Optional[pulumi.Input['StateMachineLoggingConfigurationArgs']] = None, name: Optional[pulumi.Input[str]] = None, name_prefix: Optional[pulumi.Input[str]] = None, @@ -34,6 +35,7 @@ def __init__(__self__, *, The set of arguments for constructing a StateMachine resource. :param pulumi.Input[str] definition: The [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html) definition of the state machine. :param pulumi.Input[str] role_arn: The Amazon Resource Name (ARN) of the IAM role to use for this state machine. + :param pulumi.Input['StateMachineEncryptionConfigurationArgs'] encryption_configuration: Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. :param pulumi.Input['StateMachineLoggingConfigurationArgs'] logging_configuration: Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. :param pulumi.Input[str] name: The name of the state machine. The name should only contain `0`-`9`, `A`-`Z`, `a`-`z`, `-` and `_`. If omitted, the provider will assign a random, unique name. :param pulumi.Input[str] name_prefix: Creates a unique name beginning with the specified prefix. Conflicts with `name`. @@ -44,6 +46,8 @@ def __init__(__self__, *, """ pulumi.set(__self__, "definition", definition) pulumi.set(__self__, "role_arn", role_arn) + if encryption_configuration is not None: + pulumi.set(__self__, "encryption_configuration", encryption_configuration) if logging_configuration is not None: pulumi.set(__self__, "logging_configuration", logging_configuration) if name is not None: @@ -83,6 +87,18 @@ def role_arn(self) -> pulumi.Input[str]: def role_arn(self, value: pulumi.Input[str]): pulumi.set(self, "role_arn", value) + @property + @pulumi.getter(name="encryptionConfiguration") + def encryption_configuration(self) -> Optional[pulumi.Input['StateMachineEncryptionConfigurationArgs']]: + """ + Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + """ + return pulumi.get(self, "encryption_configuration") + + @encryption_configuration.setter + def encryption_configuration(self, value: Optional[pulumi.Input['StateMachineEncryptionConfigurationArgs']]): + pulumi.set(self, "encryption_configuration", value) + @property @pulumi.getter(name="loggingConfiguration") def logging_configuration(self) -> Optional[pulumi.Input['StateMachineLoggingConfigurationArgs']]: @@ -175,6 +191,7 @@ def __init__(__self__, *, creation_date: Optional[pulumi.Input[str]] = None, definition: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, + encryption_configuration: Optional[pulumi.Input['StateMachineEncryptionConfigurationArgs']] = None, logging_configuration: Optional[pulumi.Input['StateMachineLoggingConfigurationArgs']] = None, name: Optional[pulumi.Input[str]] = None, name_prefix: Optional[pulumi.Input[str]] = None, @@ -193,6 +210,7 @@ def __init__(__self__, *, :param pulumi.Input[str] arn: The ARN of the state machine. :param pulumi.Input[str] creation_date: The date the state machine was created. :param pulumi.Input[str] definition: The [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html) definition of the state machine. + :param pulumi.Input['StateMachineEncryptionConfigurationArgs'] encryption_configuration: Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. :param pulumi.Input['StateMachineLoggingConfigurationArgs'] logging_configuration: Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. :param pulumi.Input[str] name: The name of the state machine. The name should only contain `0`-`9`, `A`-`Z`, `a`-`z`, `-` and `_`. If omitted, the provider will assign a random, unique name. :param pulumi.Input[str] name_prefix: Creates a unique name beginning with the specified prefix. Conflicts with `name`. @@ -213,6 +231,8 @@ def __init__(__self__, *, pulumi.set(__self__, "definition", definition) if description is not None: pulumi.set(__self__, "description", description) + if encryption_configuration is not None: + pulumi.set(__self__, "encryption_configuration", encryption_configuration) if logging_configuration is not None: pulumi.set(__self__, "logging_configuration", logging_configuration) if name is not None: @@ -288,6 +308,18 @@ def description(self) -> Optional[pulumi.Input[str]]: def description(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "description", value) + @property + @pulumi.getter(name="encryptionConfiguration") + def encryption_configuration(self) -> Optional[pulumi.Input['StateMachineEncryptionConfigurationArgs']]: + """ + Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + """ + return pulumi.get(self, "encryption_configuration") + + @encryption_configuration.setter + def encryption_configuration(self, value: Optional[pulumi.Input['StateMachineEncryptionConfigurationArgs']]): + pulumi.set(self, "encryption_configuration", value) + @property @pulumi.getter(name="loggingConfiguration") def logging_configuration(self) -> Optional[pulumi.Input['StateMachineLoggingConfigurationArgs']]: @@ -446,6 +478,7 @@ def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, definition: Optional[pulumi.Input[str]] = None, + encryption_configuration: Optional[pulumi.Input[Union['StateMachineEncryptionConfigurationArgs', 'StateMachineEncryptionConfigurationArgsDict']]] = None, logging_configuration: Optional[pulumi.Input[Union['StateMachineLoggingConfigurationArgs', 'StateMachineLoggingConfigurationArgsDict']]] = None, name: Optional[pulumi.Input[str]] = None, name_prefix: Optional[pulumi.Input[str]] = None, @@ -566,6 +599,37 @@ def __init__(__self__, }) ``` + ### Encryption + + > *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. + + ```python + import pulumi + import pulumi_aws as aws + + # ... + sfn_state_machine = aws.sfn.StateMachine("sfn_state_machine", + 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 + }} + }} + }} + \"\"\", + encryption_configuration={ + "kms_key_id": kms_key_for_sfn["arn"], + "type": "CUSTOMER_MANAGED_KMS_KEY", + "kms_data_key_reuse_period_seconds": 900, + }) + ``` + ## Import Using `pulumi import`, import State Machines using the `arn`. For example: @@ -577,6 +641,7 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] definition: The [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html) definition of the state machine. + :param pulumi.Input[Union['StateMachineEncryptionConfigurationArgs', 'StateMachineEncryptionConfigurationArgsDict']] encryption_configuration: Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. :param pulumi.Input[Union['StateMachineLoggingConfigurationArgs', 'StateMachineLoggingConfigurationArgsDict']] logging_configuration: Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. :param pulumi.Input[str] name: The name of the state machine. The name should only contain `0`-`9`, `A`-`Z`, `a`-`z`, `-` and `_`. If omitted, the provider will assign a random, unique name. :param pulumi.Input[str] name_prefix: Creates a unique name beginning with the specified prefix. Conflicts with `name`. @@ -703,6 +768,37 @@ def __init__(__self__, }) ``` + ### Encryption + + > *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. + + ```python + import pulumi + import pulumi_aws as aws + + # ... + sfn_state_machine = aws.sfn.StateMachine("sfn_state_machine", + 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 + }} + }} + }} + \"\"\", + encryption_configuration={ + "kms_key_id": kms_key_for_sfn["arn"], + "type": "CUSTOMER_MANAGED_KMS_KEY", + "kms_data_key_reuse_period_seconds": 900, + }) + ``` + ## Import Using `pulumi import`, import State Machines using the `arn`. For example: @@ -727,6 +823,7 @@ def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, definition: Optional[pulumi.Input[str]] = None, + encryption_configuration: Optional[pulumi.Input[Union['StateMachineEncryptionConfigurationArgs', 'StateMachineEncryptionConfigurationArgsDict']]] = None, logging_configuration: Optional[pulumi.Input[Union['StateMachineLoggingConfigurationArgs', 'StateMachineLoggingConfigurationArgsDict']]] = None, name: Optional[pulumi.Input[str]] = None, name_prefix: Optional[pulumi.Input[str]] = None, @@ -747,6 +844,7 @@ def _internal_init(__self__, if definition is None and not opts.urn: raise TypeError("Missing required property 'definition'") __props__.__dict__["definition"] = definition + __props__.__dict__["encryption_configuration"] = encryption_configuration __props__.__dict__["logging_configuration"] = logging_configuration __props__.__dict__["name"] = name __props__.__dict__["name_prefix"] = name_prefix @@ -779,6 +877,7 @@ def get(resource_name: str, creation_date: Optional[pulumi.Input[str]] = None, definition: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, + encryption_configuration: Optional[pulumi.Input[Union['StateMachineEncryptionConfigurationArgs', 'StateMachineEncryptionConfigurationArgsDict']]] = None, logging_configuration: Optional[pulumi.Input[Union['StateMachineLoggingConfigurationArgs', 'StateMachineLoggingConfigurationArgsDict']]] = None, name: Optional[pulumi.Input[str]] = None, name_prefix: Optional[pulumi.Input[str]] = None, @@ -802,6 +901,7 @@ def get(resource_name: str, :param pulumi.Input[str] arn: The ARN of the state machine. :param pulumi.Input[str] creation_date: The date the state machine was created. :param pulumi.Input[str] definition: The [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html) definition of the state machine. + :param pulumi.Input[Union['StateMachineEncryptionConfigurationArgs', 'StateMachineEncryptionConfigurationArgsDict']] encryption_configuration: Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. :param pulumi.Input[Union['StateMachineLoggingConfigurationArgs', 'StateMachineLoggingConfigurationArgsDict']] logging_configuration: Defines what execution history events are logged and where they are logged. The `logging_configuration` parameter is only valid when `type` is set to `EXPRESS`. Defaults to `OFF`. For more information see [Logging Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) and [Log Levels](https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html) in the AWS Step Functions User Guide. :param pulumi.Input[str] name: The name of the state machine. The name should only contain `0`-`9`, `A`-`Z`, `a`-`z`, `-` and `_`. If omitted, the provider will assign a random, unique name. :param pulumi.Input[str] name_prefix: Creates a unique name beginning with the specified prefix. Conflicts with `name`. @@ -822,6 +922,7 @@ def get(resource_name: str, __props__.__dict__["creation_date"] = creation_date __props__.__dict__["definition"] = definition __props__.__dict__["description"] = description + __props__.__dict__["encryption_configuration"] = encryption_configuration __props__.__dict__["logging_configuration"] = logging_configuration __props__.__dict__["name"] = name __props__.__dict__["name_prefix"] = name_prefix @@ -866,6 +967,14 @@ def definition(self) -> pulumi.Output[str]: def description(self) -> pulumi.Output[str]: return pulumi.get(self, "description") + @property + @pulumi.getter(name="encryptionConfiguration") + def encryption_configuration(self) -> pulumi.Output['outputs.StateMachineEncryptionConfiguration']: + """ + Defines what encryption configuration is used to encrypt data in the State Machine. For more information see [TBD] in the AWS Step Functions User Guide. + """ + return pulumi.get(self, "encryption_configuration") + @property @pulumi.getter(name="loggingConfiguration") def logging_configuration(self) -> pulumi.Output['outputs.StateMachineLoggingConfiguration']: diff --git a/sdk/python/pulumi_aws/timestreaminfluxdb/__init__.py b/sdk/python/pulumi_aws/timestreaminfluxdb/__init__.py new file mode 100644 index 00000000000..acd23f693ba --- /dev/null +++ b/sdk/python/pulumi_aws/timestreaminfluxdb/__init__.py @@ -0,0 +1,10 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +from .. import _utilities +import typing +# Export this package's modules as members: +from .db_instance import * +from ._inputs import * +from . import outputs diff --git a/sdk/python/pulumi_aws/timestreaminfluxdb/_inputs.py b/sdk/python/pulumi_aws/timestreaminfluxdb/_inputs.py new file mode 100644 index 00000000000..454c226731d --- /dev/null +++ b/sdk/python/pulumi_aws/timestreaminfluxdb/_inputs.py @@ -0,0 +1,187 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities + +__all__ = [ + 'DbInstanceLogDeliveryConfigurationArgs', + 'DbInstanceLogDeliveryConfigurationArgsDict', + 'DbInstanceLogDeliveryConfigurationS3ConfigurationArgs', + 'DbInstanceLogDeliveryConfigurationS3ConfigurationArgsDict', + 'DbInstanceTimeoutsArgs', + 'DbInstanceTimeoutsArgsDict', +] + +MYPY = False + +if not MYPY: + class DbInstanceLogDeliveryConfigurationArgsDict(TypedDict): + s3_configuration: NotRequired[pulumi.Input['DbInstanceLogDeliveryConfigurationS3ConfigurationArgsDict']] + """ + Configuration for S3 bucket log delivery. + """ +elif False: + DbInstanceLogDeliveryConfigurationArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class DbInstanceLogDeliveryConfigurationArgs: + def __init__(__self__, *, + s3_configuration: Optional[pulumi.Input['DbInstanceLogDeliveryConfigurationS3ConfigurationArgs']] = None): + """ + :param pulumi.Input['DbInstanceLogDeliveryConfigurationS3ConfigurationArgs'] s3_configuration: Configuration for S3 bucket log delivery. + """ + if s3_configuration is not None: + pulumi.set(__self__, "s3_configuration", s3_configuration) + + @property + @pulumi.getter(name="s3Configuration") + def s3_configuration(self) -> Optional[pulumi.Input['DbInstanceLogDeliveryConfigurationS3ConfigurationArgs']]: + """ + Configuration for S3 bucket log delivery. + """ + return pulumi.get(self, "s3_configuration") + + @s3_configuration.setter + def s3_configuration(self, value: Optional[pulumi.Input['DbInstanceLogDeliveryConfigurationS3ConfigurationArgs']]): + pulumi.set(self, "s3_configuration", value) + + +if not MYPY: + class DbInstanceLogDeliveryConfigurationS3ConfigurationArgsDict(TypedDict): + bucket_name: pulumi.Input[str] + """ + Name of the S3 bucket to deliver logs to. + """ + enabled: pulumi.Input[bool] + """ + Indicates whether log delivery to the S3 bucket is enabled. + + **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + """ +elif False: + DbInstanceLogDeliveryConfigurationS3ConfigurationArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class DbInstanceLogDeliveryConfigurationS3ConfigurationArgs: + def __init__(__self__, *, + bucket_name: pulumi.Input[str], + enabled: pulumi.Input[bool]): + """ + :param pulumi.Input[str] bucket_name: Name of the S3 bucket to deliver logs to. + :param pulumi.Input[bool] enabled: Indicates whether log delivery to the S3 bucket is enabled. + + **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + """ + pulumi.set(__self__, "bucket_name", bucket_name) + pulumi.set(__self__, "enabled", enabled) + + @property + @pulumi.getter(name="bucketName") + def bucket_name(self) -> pulumi.Input[str]: + """ + Name of the S3 bucket to deliver logs to. + """ + return pulumi.get(self, "bucket_name") + + @bucket_name.setter + def bucket_name(self, value: pulumi.Input[str]): + pulumi.set(self, "bucket_name", value) + + @property + @pulumi.getter + def enabled(self) -> pulumi.Input[bool]: + """ + Indicates whether log delivery to the S3 bucket is enabled. + + **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: pulumi.Input[bool]): + pulumi.set(self, "enabled", value) + + +if not MYPY: + class DbInstanceTimeoutsArgsDict(TypedDict): + create: NotRequired[pulumi.Input[str]] + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + delete: NotRequired[pulumi.Input[str]] + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + """ + update: NotRequired[pulumi.Input[str]] + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ +elif False: + DbInstanceTimeoutsArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class DbInstanceTimeoutsArgs: + def __init__(__self__, *, + create: Optional[pulumi.Input[str]] = None, + delete: Optional[pulumi.Input[str]] = None, + update: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] create: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + :param pulumi.Input[str] delete: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + :param pulumi.Input[str] update: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + if create is not None: + pulumi.set(__self__, "create", create) + if delete is not None: + pulumi.set(__self__, "delete", delete) + if update is not None: + pulumi.set(__self__, "update", update) + + @property + @pulumi.getter + def create(self) -> Optional[pulumi.Input[str]]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + return pulumi.get(self, "create") + + @create.setter + def create(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "create", value) + + @property + @pulumi.getter + def delete(self) -> Optional[pulumi.Input[str]]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + """ + return pulumi.get(self, "delete") + + @delete.setter + def delete(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "delete", value) + + @property + @pulumi.getter + def update(self) -> Optional[pulumi.Input[str]]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + return pulumi.get(self, "update") + + @update.setter + def update(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "update", value) + + diff --git a/sdk/python/pulumi_aws/timestreaminfluxdb/db_instance.py b/sdk/python/pulumi_aws/timestreaminfluxdb/db_instance.py new file mode 100644 index 00000000000..e3d3bb7ce08 --- /dev/null +++ b/sdk/python/pulumi_aws/timestreaminfluxdb/db_instance.py @@ -0,0 +1,1291 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['DbInstanceArgs', 'DbInstance'] + +@pulumi.input_type +class DbInstanceArgs: + def __init__(__self__, *, + allocated_storage: pulumi.Input[int], + bucket: pulumi.Input[str], + db_instance_type: pulumi.Input[str], + organization: pulumi.Input[str], + password: pulumi.Input[str], + username: pulumi.Input[str], + vpc_security_group_ids: pulumi.Input[Sequence[pulumi.Input[str]]], + vpc_subnet_ids: pulumi.Input[Sequence[pulumi.Input[str]]], + db_parameter_group_identifier: Optional[pulumi.Input[str]] = None, + db_storage_type: Optional[pulumi.Input[str]] = None, + deployment_type: Optional[pulumi.Input[str]] = None, + log_delivery_configuration: Optional[pulumi.Input['DbInstanceLogDeliveryConfigurationArgs']] = None, + name: Optional[pulumi.Input[str]] = None, + publicly_accessible: Optional[pulumi.Input[bool]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + timeouts: Optional[pulumi.Input['DbInstanceTimeoutsArgs']] = None): + """ + The set of arguments for constructing a DbInstance resource. + :param pulumi.Input[int] allocated_storage: Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + :param pulumi.Input[str] bucket: Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[str] db_instance_type: Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + :param pulumi.Input[str] organization: Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[str] password: Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[str] username: Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_security_group_ids: List of VPC security group IDs to associate with the DB instance. + :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_subnet_ids: List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + + The following arguments are optional: + :param pulumi.Input[str] db_parameter_group_identifier: ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + :param pulumi.Input[str] db_storage_type: Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use `"InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + :param pulumi.Input[str] deployment_type: Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + :param pulumi.Input['DbInstanceLogDeliveryConfigurationArgs'] log_delivery_configuration: Configuration for sending InfluxDB engine logs to a specified S3 bucket. + :param pulumi.Input[str] name: Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + :param pulumi.Input[bool] publicly_accessible: Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + """ + pulumi.set(__self__, "allocated_storage", allocated_storage) + pulumi.set(__self__, "bucket", bucket) + pulumi.set(__self__, "db_instance_type", db_instance_type) + pulumi.set(__self__, "organization", organization) + pulumi.set(__self__, "password", password) + pulumi.set(__self__, "username", username) + pulumi.set(__self__, "vpc_security_group_ids", vpc_security_group_ids) + pulumi.set(__self__, "vpc_subnet_ids", vpc_subnet_ids) + if db_parameter_group_identifier is not None: + pulumi.set(__self__, "db_parameter_group_identifier", db_parameter_group_identifier) + if db_storage_type is not None: + pulumi.set(__self__, "db_storage_type", db_storage_type) + if deployment_type is not None: + pulumi.set(__self__, "deployment_type", deployment_type) + if log_delivery_configuration is not None: + pulumi.set(__self__, "log_delivery_configuration", log_delivery_configuration) + if name is not None: + pulumi.set(__self__, "name", name) + if publicly_accessible is not None: + pulumi.set(__self__, "publicly_accessible", publicly_accessible) + if tags is not None: + pulumi.set(__self__, "tags", tags) + if timeouts is not None: + pulumi.set(__self__, "timeouts", timeouts) + + @property + @pulumi.getter(name="allocatedStorage") + def allocated_storage(self) -> pulumi.Input[int]: + """ + Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + """ + return pulumi.get(self, "allocated_storage") + + @allocated_storage.setter + def allocated_storage(self, value: pulumi.Input[int]): + pulumi.set(self, "allocated_storage", value) + + @property + @pulumi.getter + def bucket(self) -> pulumi.Input[str]: + """ + Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + """ + return pulumi.get(self, "bucket") + + @bucket.setter + def bucket(self, value: pulumi.Input[str]): + pulumi.set(self, "bucket", value) + + @property + @pulumi.getter(name="dbInstanceType") + def db_instance_type(self) -> pulumi.Input[str]: + """ + Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + """ + return pulumi.get(self, "db_instance_type") + + @db_instance_type.setter + def db_instance_type(self, value: pulumi.Input[str]): + pulumi.set(self, "db_instance_type", value) + + @property + @pulumi.getter + def organization(self) -> pulumi.Input[str]: + """ + Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + """ + return pulumi.get(self, "organization") + + @organization.setter + def organization(self, value: pulumi.Input[str]): + pulumi.set(self, "organization", value) + + @property + @pulumi.getter + def password(self) -> pulumi.Input[str]: + """ + Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + """ + return pulumi.get(self, "password") + + @password.setter + def password(self, value: pulumi.Input[str]): + pulumi.set(self, "password", value) + + @property + @pulumi.getter + def username(self) -> pulumi.Input[str]: + """ + Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + """ + return pulumi.get(self, "username") + + @username.setter + def username(self, value: pulumi.Input[str]): + pulumi.set(self, "username", value) + + @property + @pulumi.getter(name="vpcSecurityGroupIds") + def vpc_security_group_ids(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]: + """ + List of VPC security group IDs to associate with the DB instance. + """ + return pulumi.get(self, "vpc_security_group_ids") + + @vpc_security_group_ids.setter + def vpc_security_group_ids(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]): + pulumi.set(self, "vpc_security_group_ids", value) + + @property + @pulumi.getter(name="vpcSubnetIds") + def vpc_subnet_ids(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]: + """ + List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + + The following arguments are optional: + """ + return pulumi.get(self, "vpc_subnet_ids") + + @vpc_subnet_ids.setter + def vpc_subnet_ids(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]): + pulumi.set(self, "vpc_subnet_ids", value) + + @property + @pulumi.getter(name="dbParameterGroupIdentifier") + def db_parameter_group_identifier(self) -> Optional[pulumi.Input[str]]: + """ + ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + """ + return pulumi.get(self, "db_parameter_group_identifier") + + @db_parameter_group_identifier.setter + def db_parameter_group_identifier(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "db_parameter_group_identifier", value) + + @property + @pulumi.getter(name="dbStorageType") + def db_storage_type(self) -> Optional[pulumi.Input[str]]: + """ + Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use `"InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + """ + return pulumi.get(self, "db_storage_type") + + @db_storage_type.setter + def db_storage_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "db_storage_type", value) + + @property + @pulumi.getter(name="deploymentType") + def deployment_type(self) -> Optional[pulumi.Input[str]]: + """ + Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + """ + return pulumi.get(self, "deployment_type") + + @deployment_type.setter + def deployment_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "deployment_type", value) + + @property + @pulumi.getter(name="logDeliveryConfiguration") + def log_delivery_configuration(self) -> Optional[pulumi.Input['DbInstanceLogDeliveryConfigurationArgs']]: + """ + Configuration for sending InfluxDB engine logs to a specified S3 bucket. + """ + return pulumi.get(self, "log_delivery_configuration") + + @log_delivery_configuration.setter + def log_delivery_configuration(self, value: Optional[pulumi.Input['DbInstanceLogDeliveryConfigurationArgs']]): + pulumi.set(self, "log_delivery_configuration", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="publiclyAccessible") + def publicly_accessible(self) -> Optional[pulumi.Input[bool]]: + """ + Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + """ + return pulumi.get(self, "publicly_accessible") + + @publicly_accessible.setter + def publicly_accessible(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "publicly_accessible", value) + + @property + @pulumi.getter + def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + """ + return pulumi.get(self, "tags") + + @tags.setter + def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "tags", value) + + @property + @pulumi.getter + def timeouts(self) -> Optional[pulumi.Input['DbInstanceTimeoutsArgs']]: + return pulumi.get(self, "timeouts") + + @timeouts.setter + def timeouts(self, value: Optional[pulumi.Input['DbInstanceTimeoutsArgs']]): + pulumi.set(self, "timeouts", value) + + +@pulumi.input_type +class _DbInstanceState: + def __init__(__self__, *, + allocated_storage: Optional[pulumi.Input[int]] = None, + arn: Optional[pulumi.Input[str]] = None, + availability_zone: Optional[pulumi.Input[str]] = None, + bucket: Optional[pulumi.Input[str]] = None, + db_instance_type: Optional[pulumi.Input[str]] = None, + db_parameter_group_identifier: Optional[pulumi.Input[str]] = None, + db_storage_type: Optional[pulumi.Input[str]] = None, + deployment_type: Optional[pulumi.Input[str]] = None, + endpoint: Optional[pulumi.Input[str]] = None, + influx_auth_parameters_secret_arn: Optional[pulumi.Input[str]] = None, + log_delivery_configuration: Optional[pulumi.Input['DbInstanceLogDeliveryConfigurationArgs']] = None, + name: Optional[pulumi.Input[str]] = None, + organization: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + publicly_accessible: Optional[pulumi.Input[bool]] = None, + secondary_availability_zone: Optional[pulumi.Input[str]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + timeouts: Optional[pulumi.Input['DbInstanceTimeoutsArgs']] = None, + username: Optional[pulumi.Input[str]] = None, + vpc_security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + vpc_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): + """ + Input properties used for looking up and filtering DbInstance resources. + :param pulumi.Input[int] allocated_storage: Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + :param pulumi.Input[str] arn: ARN of the Timestream for InfluxDB Instance. + :param pulumi.Input[str] availability_zone: Availability Zone in which the DB instance resides. + :param pulumi.Input[str] bucket: Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[str] db_instance_type: Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + :param pulumi.Input[str] db_parameter_group_identifier: ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + :param pulumi.Input[str] db_storage_type: Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use `"InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + :param pulumi.Input[str] deployment_type: Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + :param pulumi.Input[str] endpoint: Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + :param pulumi.Input[str] influx_auth_parameters_secret_arn: ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + :param pulumi.Input['DbInstanceLogDeliveryConfigurationArgs'] log_delivery_configuration: Configuration for sending InfluxDB engine logs to a specified S3 bucket. + :param pulumi.Input[str] name: Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + :param pulumi.Input[str] organization: Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[str] password: Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[bool] publicly_accessible: Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + :param pulumi.Input[str] secondary_availability_zone: Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags_all: Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + :param pulumi.Input[str] username: Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_security_group_ids: List of VPC security group IDs to associate with the DB instance. + :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_subnet_ids: List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + + The following arguments are optional: + """ + if allocated_storage is not None: + pulumi.set(__self__, "allocated_storage", allocated_storage) + if arn is not None: + pulumi.set(__self__, "arn", arn) + if availability_zone is not None: + pulumi.set(__self__, "availability_zone", availability_zone) + if bucket is not None: + pulumi.set(__self__, "bucket", bucket) + if db_instance_type is not None: + pulumi.set(__self__, "db_instance_type", db_instance_type) + if db_parameter_group_identifier is not None: + pulumi.set(__self__, "db_parameter_group_identifier", db_parameter_group_identifier) + if db_storage_type is not None: + pulumi.set(__self__, "db_storage_type", db_storage_type) + if deployment_type is not None: + pulumi.set(__self__, "deployment_type", deployment_type) + if endpoint is not None: + pulumi.set(__self__, "endpoint", endpoint) + if influx_auth_parameters_secret_arn is not None: + pulumi.set(__self__, "influx_auth_parameters_secret_arn", influx_auth_parameters_secret_arn) + if log_delivery_configuration is not None: + pulumi.set(__self__, "log_delivery_configuration", log_delivery_configuration) + if name is not None: + pulumi.set(__self__, "name", name) + if organization is not None: + pulumi.set(__self__, "organization", organization) + if password is not None: + pulumi.set(__self__, "password", password) + if publicly_accessible is not None: + pulumi.set(__self__, "publicly_accessible", publicly_accessible) + if secondary_availability_zone is not None: + pulumi.set(__self__, "secondary_availability_zone", secondary_availability_zone) + if tags is not None: + pulumi.set(__self__, "tags", tags) + if tags_all is not None: + warnings.warn("""Please use `tags` instead.""", DeprecationWarning) + pulumi.log.warn("""tags_all is deprecated: Please use `tags` instead.""") + if tags_all is not None: + pulumi.set(__self__, "tags_all", tags_all) + if timeouts is not None: + pulumi.set(__self__, "timeouts", timeouts) + if username is not None: + pulumi.set(__self__, "username", username) + if vpc_security_group_ids is not None: + pulumi.set(__self__, "vpc_security_group_ids", vpc_security_group_ids) + if vpc_subnet_ids is not None: + pulumi.set(__self__, "vpc_subnet_ids", vpc_subnet_ids) + + @property + @pulumi.getter(name="allocatedStorage") + def allocated_storage(self) -> Optional[pulumi.Input[int]]: + """ + Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + """ + return pulumi.get(self, "allocated_storage") + + @allocated_storage.setter + def allocated_storage(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "allocated_storage", value) + + @property + @pulumi.getter + def arn(self) -> Optional[pulumi.Input[str]]: + """ + ARN of the Timestream for InfluxDB Instance. + """ + return pulumi.get(self, "arn") + + @arn.setter + def arn(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "arn", value) + + @property + @pulumi.getter(name="availabilityZone") + def availability_zone(self) -> Optional[pulumi.Input[str]]: + """ + Availability Zone in which the DB instance resides. + """ + return pulumi.get(self, "availability_zone") + + @availability_zone.setter + def availability_zone(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "availability_zone", value) + + @property + @pulumi.getter + def bucket(self) -> Optional[pulumi.Input[str]]: + """ + Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + """ + return pulumi.get(self, "bucket") + + @bucket.setter + def bucket(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "bucket", value) + + @property + @pulumi.getter(name="dbInstanceType") + def db_instance_type(self) -> Optional[pulumi.Input[str]]: + """ + Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + """ + return pulumi.get(self, "db_instance_type") + + @db_instance_type.setter + def db_instance_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "db_instance_type", value) + + @property + @pulumi.getter(name="dbParameterGroupIdentifier") + def db_parameter_group_identifier(self) -> Optional[pulumi.Input[str]]: + """ + ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + """ + return pulumi.get(self, "db_parameter_group_identifier") + + @db_parameter_group_identifier.setter + def db_parameter_group_identifier(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "db_parameter_group_identifier", value) + + @property + @pulumi.getter(name="dbStorageType") + def db_storage_type(self) -> Optional[pulumi.Input[str]]: + """ + Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use `"InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + """ + return pulumi.get(self, "db_storage_type") + + @db_storage_type.setter + def db_storage_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "db_storage_type", value) + + @property + @pulumi.getter(name="deploymentType") + def deployment_type(self) -> Optional[pulumi.Input[str]]: + """ + Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + """ + return pulumi.get(self, "deployment_type") + + @deployment_type.setter + def deployment_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "deployment_type", value) + + @property + @pulumi.getter + def endpoint(self) -> Optional[pulumi.Input[str]]: + """ + Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + """ + return pulumi.get(self, "endpoint") + + @endpoint.setter + def endpoint(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "endpoint", value) + + @property + @pulumi.getter(name="influxAuthParametersSecretArn") + def influx_auth_parameters_secret_arn(self) -> Optional[pulumi.Input[str]]: + """ + ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + """ + return pulumi.get(self, "influx_auth_parameters_secret_arn") + + @influx_auth_parameters_secret_arn.setter + def influx_auth_parameters_secret_arn(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "influx_auth_parameters_secret_arn", value) + + @property + @pulumi.getter(name="logDeliveryConfiguration") + def log_delivery_configuration(self) -> Optional[pulumi.Input['DbInstanceLogDeliveryConfigurationArgs']]: + """ + Configuration for sending InfluxDB engine logs to a specified S3 bucket. + """ + return pulumi.get(self, "log_delivery_configuration") + + @log_delivery_configuration.setter + def log_delivery_configuration(self, value: Optional[pulumi.Input['DbInstanceLogDeliveryConfigurationArgs']]): + pulumi.set(self, "log_delivery_configuration", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def organization(self) -> Optional[pulumi.Input[str]]: + """ + Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + """ + return pulumi.get(self, "organization") + + @organization.setter + def organization(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "organization", value) + + @property + @pulumi.getter + def password(self) -> Optional[pulumi.Input[str]]: + """ + Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + """ + return pulumi.get(self, "password") + + @password.setter + def password(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "password", value) + + @property + @pulumi.getter(name="publiclyAccessible") + def publicly_accessible(self) -> Optional[pulumi.Input[bool]]: + """ + Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + """ + return pulumi.get(self, "publicly_accessible") + + @publicly_accessible.setter + def publicly_accessible(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "publicly_accessible", value) + + @property + @pulumi.getter(name="secondaryAvailabilityZone") + def secondary_availability_zone(self) -> Optional[pulumi.Input[str]]: + """ + Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + """ + return pulumi.get(self, "secondary_availability_zone") + + @secondary_availability_zone.setter + def secondary_availability_zone(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "secondary_availability_zone", value) + + @property + @pulumi.getter + def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + """ + return pulumi.get(self, "tags") + + @tags.setter + def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "tags", value) + + @property + @pulumi.getter(name="tagsAll") + @_utilities.deprecated("""Please use `tags` instead.""") + def tags_all(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + """ + return pulumi.get(self, "tags_all") + + @tags_all.setter + def tags_all(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "tags_all", value) + + @property + @pulumi.getter + def timeouts(self) -> Optional[pulumi.Input['DbInstanceTimeoutsArgs']]: + return pulumi.get(self, "timeouts") + + @timeouts.setter + def timeouts(self, value: Optional[pulumi.Input['DbInstanceTimeoutsArgs']]): + pulumi.set(self, "timeouts", value) + + @property + @pulumi.getter + def username(self) -> Optional[pulumi.Input[str]]: + """ + Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + """ + return pulumi.get(self, "username") + + @username.setter + def username(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "username", value) + + @property + @pulumi.getter(name="vpcSecurityGroupIds") + def vpc_security_group_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + List of VPC security group IDs to associate with the DB instance. + """ + return pulumi.get(self, "vpc_security_group_ids") + + @vpc_security_group_ids.setter + def vpc_security_group_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "vpc_security_group_ids", value) + + @property + @pulumi.getter(name="vpcSubnetIds") + def vpc_subnet_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + + The following arguments are optional: + """ + return pulumi.get(self, "vpc_subnet_ids") + + @vpc_subnet_ids.setter + def vpc_subnet_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "vpc_subnet_ids", value) + + +class DbInstance(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + allocated_storage: Optional[pulumi.Input[int]] = None, + bucket: Optional[pulumi.Input[str]] = None, + db_instance_type: Optional[pulumi.Input[str]] = None, + db_parameter_group_identifier: Optional[pulumi.Input[str]] = None, + db_storage_type: Optional[pulumi.Input[str]] = None, + deployment_type: Optional[pulumi.Input[str]] = None, + log_delivery_configuration: Optional[pulumi.Input[Union['DbInstanceLogDeliveryConfigurationArgs', 'DbInstanceLogDeliveryConfigurationArgsDict']]] = None, + name: Optional[pulumi.Input[str]] = None, + organization: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + publicly_accessible: Optional[pulumi.Input[bool]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + timeouts: Optional[pulumi.Input[Union['DbInstanceTimeoutsArgs', 'DbInstanceTimeoutsArgsDict']]] = None, + username: Optional[pulumi.Input[str]] = None, + vpc_security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + vpc_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + __props__=None): + """ + Resource for managing an Amazon Timestream for InfluxDB Db Instance. + + ## Example Usage + + ### Basic Usage + + ```python + import pulumi + import pulumi_aws as aws + + example = aws.timestreaminfluxdb.DbInstance("example", + allocated_storage=20, + bucket="example-bucket-name", + db_instance_type="db.influx.medium", + username="admin", + password="example-password", + organization="organization", + vpc_subnet_ids=[exampleid], + vpc_security_group_ids=[example_aws_security_group["id"]], + name="example-db-instance") + ``` + + ### Usage with Prerequisite Resources + + All Timestream for InfluxDB instances require a VPC, subnet, and security group. The following example shows how these prerequisite resources can be created and used with `timestreaminfluxdb.DbInstance`. + + ```python + import pulumi + import pulumi_aws as aws + + example = aws.ec2.Vpc("example", cidr_block="10.0.0.0/16") + example_subnet = aws.ec2.Subnet("example", + vpc_id=example.id, + cidr_block="10.0.1.0/24") + example_security_group = aws.ec2.SecurityGroup("example", + name="example", + vpc_id=example.id) + example_db_instance = aws.timestreaminfluxdb.DbInstance("example", + allocated_storage=20, + bucket="example-bucket-name", + db_instance_type="db.influx.medium", + username="admin", + password="example-password", + organization="organization", + vpc_subnet_ids=[example_subnet.id], + vpc_security_group_ids=[example_security_group.id], + name="example-db-instance") + ``` + + ### Usage with S3 Log Delivery Enabled + + You can use an S3 bucket to store logs generated by your Timestream for InfluxDB instance. The following example shows what resources and arguments are required to configure an S3 bucket for logging, including the IAM policy that needs to be set in order to allow Timestream for InfluxDB to place logs in your S3 bucket. The configuration of the required VPC, security group, and subnet have been left out of the example for brevity. + + ```python + import pulumi + import pulumi_aws as aws + + example_bucket_v2 = aws.s3.BucketV2("example", bucket="example-s3-bucket") + example = aws.iam.get_policy_document_output(statements=[{ + "actions": ["s3:PutObject"], + "principals": [{ + "type": "Service", + "identifiers": ["timestream-influxdb.amazonaws.com"], + }], + "resources": [example_bucket_v2.arn.apply(lambda arn: f"{arn}/*")], + }]) + example_bucket_policy = aws.s3.BucketPolicy("example", + bucket=example_bucket_v2.id, + policy=example.json) + example_db_instance = aws.timestreaminfluxdb.DbInstance("example", + allocated_storage=20, + bucket="example-bucket-name", + db_instance_type="db.influx.medium", + username="admin", + password="example-password", + organization="organization", + vpc_subnet_ids=[example_aws_subnet["id"]], + vpc_security_group_ids=[example_aws_security_group["id"]], + name="example-db-instance", + log_delivery_configuration={ + "s3_configuration": { + "bucket_name": example_bucket_v2.name, + "enabled": True, + }, + }) + ``` + + ### Usage with MultiAZ Deployment + + To use multi-region availability, at least two subnets must be created in different availability zones and used with your Timestream for InfluxDB instance. + + ```python + import pulumi + import pulumi_aws as aws + + example1 = aws.ec2.Subnet("example_1", + vpc_id=example_aws_vpc["id"], + cidr_block="10.0.1.0/24", + availability_zone="us-west-2a") + example2 = aws.ec2.Subnet("example_2", + vpc_id=example_aws_vpc["id"], + cidr_block="10.0.2.0/24", + availability_zone="us-west-2b") + example = aws.timestreaminfluxdb.DbInstance("example", + allocated_storage=20, + bucket="example-bucket-name", + db_instance_type="db.influx.medium", + deployment_type="WITH_MULTIAZ_STANDBY", + username="admin", + password="example-password", + organization="organization", + vpc_subnet_ids=[ + example1.id, + example2.id, + ], + vpc_security_group_ids=[example_aws_security_group["id"]], + name="example-db-instance") + ``` + + ## Import + + Using `pulumi import`, import Timestream for InfluxDB Db Instance using its identifier. For example: + + ```sh + $ pulumi import aws:timestreaminfluxdb/dbInstance:DbInstance example 12345abcde + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[int] allocated_storage: Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + :param pulumi.Input[str] bucket: Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[str] db_instance_type: Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + :param pulumi.Input[str] db_parameter_group_identifier: ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + :param pulumi.Input[str] db_storage_type: Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use `"InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + :param pulumi.Input[str] deployment_type: Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + :param pulumi.Input[Union['DbInstanceLogDeliveryConfigurationArgs', 'DbInstanceLogDeliveryConfigurationArgsDict']] log_delivery_configuration: Configuration for sending InfluxDB engine logs to a specified S3 bucket. + :param pulumi.Input[str] name: Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + :param pulumi.Input[str] organization: Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[str] password: Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[bool] publicly_accessible: Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + :param pulumi.Input[str] username: Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_security_group_ids: List of VPC security group IDs to associate with the DB instance. + :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_subnet_ids: List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + + The following arguments are optional: + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: DbInstanceArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Resource for managing an Amazon Timestream for InfluxDB Db Instance. + + ## Example Usage + + ### Basic Usage + + ```python + import pulumi + import pulumi_aws as aws + + example = aws.timestreaminfluxdb.DbInstance("example", + allocated_storage=20, + bucket="example-bucket-name", + db_instance_type="db.influx.medium", + username="admin", + password="example-password", + organization="organization", + vpc_subnet_ids=[exampleid], + vpc_security_group_ids=[example_aws_security_group["id"]], + name="example-db-instance") + ``` + + ### Usage with Prerequisite Resources + + All Timestream for InfluxDB instances require a VPC, subnet, and security group. The following example shows how these prerequisite resources can be created and used with `timestreaminfluxdb.DbInstance`. + + ```python + import pulumi + import pulumi_aws as aws + + example = aws.ec2.Vpc("example", cidr_block="10.0.0.0/16") + example_subnet = aws.ec2.Subnet("example", + vpc_id=example.id, + cidr_block="10.0.1.0/24") + example_security_group = aws.ec2.SecurityGroup("example", + name="example", + vpc_id=example.id) + example_db_instance = aws.timestreaminfluxdb.DbInstance("example", + allocated_storage=20, + bucket="example-bucket-name", + db_instance_type="db.influx.medium", + username="admin", + password="example-password", + organization="organization", + vpc_subnet_ids=[example_subnet.id], + vpc_security_group_ids=[example_security_group.id], + name="example-db-instance") + ``` + + ### Usage with S3 Log Delivery Enabled + + You can use an S3 bucket to store logs generated by your Timestream for InfluxDB instance. The following example shows what resources and arguments are required to configure an S3 bucket for logging, including the IAM policy that needs to be set in order to allow Timestream for InfluxDB to place logs in your S3 bucket. The configuration of the required VPC, security group, and subnet have been left out of the example for brevity. + + ```python + import pulumi + import pulumi_aws as aws + + example_bucket_v2 = aws.s3.BucketV2("example", bucket="example-s3-bucket") + example = aws.iam.get_policy_document_output(statements=[{ + "actions": ["s3:PutObject"], + "principals": [{ + "type": "Service", + "identifiers": ["timestream-influxdb.amazonaws.com"], + }], + "resources": [example_bucket_v2.arn.apply(lambda arn: f"{arn}/*")], + }]) + example_bucket_policy = aws.s3.BucketPolicy("example", + bucket=example_bucket_v2.id, + policy=example.json) + example_db_instance = aws.timestreaminfluxdb.DbInstance("example", + allocated_storage=20, + bucket="example-bucket-name", + db_instance_type="db.influx.medium", + username="admin", + password="example-password", + organization="organization", + vpc_subnet_ids=[example_aws_subnet["id"]], + vpc_security_group_ids=[example_aws_security_group["id"]], + name="example-db-instance", + log_delivery_configuration={ + "s3_configuration": { + "bucket_name": example_bucket_v2.name, + "enabled": True, + }, + }) + ``` + + ### Usage with MultiAZ Deployment + + To use multi-region availability, at least two subnets must be created in different availability zones and used with your Timestream for InfluxDB instance. + + ```python + import pulumi + import pulumi_aws as aws + + example1 = aws.ec2.Subnet("example_1", + vpc_id=example_aws_vpc["id"], + cidr_block="10.0.1.0/24", + availability_zone="us-west-2a") + example2 = aws.ec2.Subnet("example_2", + vpc_id=example_aws_vpc["id"], + cidr_block="10.0.2.0/24", + availability_zone="us-west-2b") + example = aws.timestreaminfluxdb.DbInstance("example", + allocated_storage=20, + bucket="example-bucket-name", + db_instance_type="db.influx.medium", + deployment_type="WITH_MULTIAZ_STANDBY", + username="admin", + password="example-password", + organization="organization", + vpc_subnet_ids=[ + example1.id, + example2.id, + ], + vpc_security_group_ids=[example_aws_security_group["id"]], + name="example-db-instance") + ``` + + ## Import + + Using `pulumi import`, import Timestream for InfluxDB Db Instance using its identifier. For example: + + ```sh + $ pulumi import aws:timestreaminfluxdb/dbInstance:DbInstance example 12345abcde + ``` + + :param str resource_name: The name of the resource. + :param DbInstanceArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(DbInstanceArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + allocated_storage: Optional[pulumi.Input[int]] = None, + bucket: Optional[pulumi.Input[str]] = None, + db_instance_type: Optional[pulumi.Input[str]] = None, + db_parameter_group_identifier: Optional[pulumi.Input[str]] = None, + db_storage_type: Optional[pulumi.Input[str]] = None, + deployment_type: Optional[pulumi.Input[str]] = None, + log_delivery_configuration: Optional[pulumi.Input[Union['DbInstanceLogDeliveryConfigurationArgs', 'DbInstanceLogDeliveryConfigurationArgsDict']]] = None, + name: Optional[pulumi.Input[str]] = None, + organization: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + publicly_accessible: Optional[pulumi.Input[bool]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + timeouts: Optional[pulumi.Input[Union['DbInstanceTimeoutsArgs', 'DbInstanceTimeoutsArgsDict']]] = None, + username: Optional[pulumi.Input[str]] = None, + vpc_security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + vpc_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = DbInstanceArgs.__new__(DbInstanceArgs) + + if allocated_storage is None and not opts.urn: + raise TypeError("Missing required property 'allocated_storage'") + __props__.__dict__["allocated_storage"] = allocated_storage + if bucket is None and not opts.urn: + raise TypeError("Missing required property 'bucket'") + __props__.__dict__["bucket"] = bucket + if db_instance_type is None and not opts.urn: + raise TypeError("Missing required property 'db_instance_type'") + __props__.__dict__["db_instance_type"] = db_instance_type + __props__.__dict__["db_parameter_group_identifier"] = db_parameter_group_identifier + __props__.__dict__["db_storage_type"] = db_storage_type + __props__.__dict__["deployment_type"] = deployment_type + __props__.__dict__["log_delivery_configuration"] = log_delivery_configuration + __props__.__dict__["name"] = name + if organization is None and not opts.urn: + raise TypeError("Missing required property 'organization'") + __props__.__dict__["organization"] = organization + if password is None and not opts.urn: + raise TypeError("Missing required property 'password'") + __props__.__dict__["password"] = None if password is None else pulumi.Output.secret(password) + __props__.__dict__["publicly_accessible"] = publicly_accessible + __props__.__dict__["tags"] = tags + __props__.__dict__["timeouts"] = timeouts + if username is None and not opts.urn: + raise TypeError("Missing required property 'username'") + __props__.__dict__["username"] = username + if vpc_security_group_ids is None and not opts.urn: + raise TypeError("Missing required property 'vpc_security_group_ids'") + __props__.__dict__["vpc_security_group_ids"] = vpc_security_group_ids + if vpc_subnet_ids is None and not opts.urn: + raise TypeError("Missing required property 'vpc_subnet_ids'") + __props__.__dict__["vpc_subnet_ids"] = vpc_subnet_ids + __props__.__dict__["arn"] = None + __props__.__dict__["availability_zone"] = None + __props__.__dict__["endpoint"] = None + __props__.__dict__["influx_auth_parameters_secret_arn"] = None + __props__.__dict__["secondary_availability_zone"] = None + __props__.__dict__["tags_all"] = None + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["password"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(DbInstance, __self__).__init__( + 'aws:timestreaminfluxdb/dbInstance:DbInstance', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + allocated_storage: Optional[pulumi.Input[int]] = None, + arn: Optional[pulumi.Input[str]] = None, + availability_zone: Optional[pulumi.Input[str]] = None, + bucket: Optional[pulumi.Input[str]] = None, + db_instance_type: Optional[pulumi.Input[str]] = None, + db_parameter_group_identifier: Optional[pulumi.Input[str]] = None, + db_storage_type: Optional[pulumi.Input[str]] = None, + deployment_type: Optional[pulumi.Input[str]] = None, + endpoint: Optional[pulumi.Input[str]] = None, + influx_auth_parameters_secret_arn: Optional[pulumi.Input[str]] = None, + log_delivery_configuration: Optional[pulumi.Input[Union['DbInstanceLogDeliveryConfigurationArgs', 'DbInstanceLogDeliveryConfigurationArgsDict']]] = None, + name: Optional[pulumi.Input[str]] = None, + organization: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + publicly_accessible: Optional[pulumi.Input[bool]] = None, + secondary_availability_zone: Optional[pulumi.Input[str]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + timeouts: Optional[pulumi.Input[Union['DbInstanceTimeoutsArgs', 'DbInstanceTimeoutsArgsDict']]] = None, + username: Optional[pulumi.Input[str]] = None, + vpc_security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + vpc_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None) -> 'DbInstance': + """ + Get an existing DbInstance resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[int] allocated_storage: Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + :param pulumi.Input[str] arn: ARN of the Timestream for InfluxDB Instance. + :param pulumi.Input[str] availability_zone: Availability Zone in which the DB instance resides. + :param pulumi.Input[str] bucket: Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[str] db_instance_type: Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + :param pulumi.Input[str] db_parameter_group_identifier: ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + :param pulumi.Input[str] db_storage_type: Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use `"InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + :param pulumi.Input[str] deployment_type: Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + :param pulumi.Input[str] endpoint: Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + :param pulumi.Input[str] influx_auth_parameters_secret_arn: ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + :param pulumi.Input[Union['DbInstanceLogDeliveryConfigurationArgs', 'DbInstanceLogDeliveryConfigurationArgsDict']] log_delivery_configuration: Configuration for sending InfluxDB engine logs to a specified S3 bucket. + :param pulumi.Input[str] name: Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + :param pulumi.Input[str] organization: Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[str] password: Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[bool] publicly_accessible: Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + :param pulumi.Input[str] secondary_availability_zone: Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags_all: Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + :param pulumi.Input[str] username: Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_security_group_ids: List of VPC security group IDs to associate with the DB instance. + :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_subnet_ids: List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + + The following arguments are optional: + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _DbInstanceState.__new__(_DbInstanceState) + + __props__.__dict__["allocated_storage"] = allocated_storage + __props__.__dict__["arn"] = arn + __props__.__dict__["availability_zone"] = availability_zone + __props__.__dict__["bucket"] = bucket + __props__.__dict__["db_instance_type"] = db_instance_type + __props__.__dict__["db_parameter_group_identifier"] = db_parameter_group_identifier + __props__.__dict__["db_storage_type"] = db_storage_type + __props__.__dict__["deployment_type"] = deployment_type + __props__.__dict__["endpoint"] = endpoint + __props__.__dict__["influx_auth_parameters_secret_arn"] = influx_auth_parameters_secret_arn + __props__.__dict__["log_delivery_configuration"] = log_delivery_configuration + __props__.__dict__["name"] = name + __props__.__dict__["organization"] = organization + __props__.__dict__["password"] = password + __props__.__dict__["publicly_accessible"] = publicly_accessible + __props__.__dict__["secondary_availability_zone"] = secondary_availability_zone + __props__.__dict__["tags"] = tags + __props__.__dict__["tags_all"] = tags_all + __props__.__dict__["timeouts"] = timeouts + __props__.__dict__["username"] = username + __props__.__dict__["vpc_security_group_ids"] = vpc_security_group_ids + __props__.__dict__["vpc_subnet_ids"] = vpc_subnet_ids + return DbInstance(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="allocatedStorage") + def allocated_storage(self) -> pulumi.Output[int]: + """ + Amount of storage in GiB (gibibytes). The minimum value is 20, the maximum value is 16384. + """ + return pulumi.get(self, "allocated_storage") + + @property + @pulumi.getter + def arn(self) -> pulumi.Output[str]: + """ + ARN of the Timestream for InfluxDB Instance. + """ + return pulumi.get(self, "arn") + + @property + @pulumi.getter(name="availabilityZone") + def availability_zone(self) -> pulumi.Output[str]: + """ + Availability Zone in which the DB instance resides. + """ + return pulumi.get(self, "availability_zone") + + @property + @pulumi.getter + def bucket(self) -> pulumi.Output[str]: + """ + Name of the initial InfluxDB bucket. All InfluxDB data is stored in a bucket. A bucket combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. Along with `organization`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + """ + return pulumi.get(self, "bucket") + + @property + @pulumi.getter(name="dbInstanceType") + def db_instance_type(self) -> pulumi.Output[str]: + """ + Timestream for InfluxDB DB instance type to run InfluxDB on. Valid options are: `"db.influx.medium"`, `"db.influx.large"`, `"db.influx.xlarge"`, `"db.influx.2xlarge"`, `"db.influx.4xlarge"`, `"db.influx.8xlarge"`, `"db.influx.12xlarge"`, and `"db.influx.16xlarge"`. + """ + return pulumi.get(self, "db_instance_type") + + @property + @pulumi.getter(name="dbParameterGroupIdentifier") + def db_parameter_group_identifier(self) -> pulumi.Output[Optional[str]]: + """ + ID of the DB parameter group assigned to your DB instance. If added to an existing Timestream for InfluxDB instance or given a new value, will cause an in-place update to the instance. However, if an instance already has a value for `db_parameter_group_identifier`, removing `db_parameter_group_identifier` will cause the instance to be destroyed and recreated. + """ + return pulumi.get(self, "db_parameter_group_identifier") + + @property + @pulumi.getter(name="dbStorageType") + def db_storage_type(self) -> pulumi.Output[str]: + """ + Timestream for InfluxDB DB storage type to read and write InfluxDB data. You can choose between 3 different types of provisioned Influx IOPS included storage according to your workloads requirements: Influx IO Included 3000 IOPS, Influx IO Included 12000 IOPS, Influx IO Included 16000 IOPS. Valid options are: `"InfluxIOIncludedT1"`, `"InfluxIOIncludedT2"`, and `"InfluxIOIncludedT1"`. If you use `"InfluxIOIncludedT2" or "InfluxIOIncludedT3", the minimum value for `allocated_storage` is 400. + """ + return pulumi.get(self, "db_storage_type") + + @property + @pulumi.getter(name="deploymentType") + def deployment_type(self) -> pulumi.Output[str]: + """ + Specifies whether the DB instance will be deployed as a standalone instance or with a Multi-AZ standby for high availability. Valid options are: `"SINGLE_AZ"`, `"WITH_MULTIAZ_STANDBY"`. + """ + return pulumi.get(self, "deployment_type") + + @property + @pulumi.getter + def endpoint(self) -> pulumi.Output[str]: + """ + Endpoint used to connect to InfluxDB. The default InfluxDB port is 8086. + """ + return pulumi.get(self, "endpoint") + + @property + @pulumi.getter(name="influxAuthParametersSecretArn") + def influx_auth_parameters_secret_arn(self) -> pulumi.Output[str]: + """ + ARN of the AWS Secrets Manager secret containing the initial InfluxDB authorization parameters. The secret value is a JSON formatted key-value pair holding InfluxDB authorization values: organization, bucket, username, and password. This secret will be read by the `timestreaminfluxdb.DbInstance` resource in order to support importing: deleting the secret or secret values can cause errors. + """ + return pulumi.get(self, "influx_auth_parameters_secret_arn") + + @property + @pulumi.getter(name="logDeliveryConfiguration") + def log_delivery_configuration(self) -> pulumi.Output[Optional['outputs.DbInstanceLogDeliveryConfiguration']]: + """ + Configuration for sending InfluxDB engine logs to a specified S3 bucket. + """ + return pulumi.get(self, "log_delivery_configuration") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + Name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands. This name will also be a prefix included in the endpoint. DB instance names must be unique per customer and per region. The argument must start with a letter, cannot contain consecutive hyphens (`-`) and cannot end with a hyphen. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def organization(self) -> pulumi.Output[str]: + """ + Name of the initial organization for the initial admin user in InfluxDB. An InfluxDB organization is a workspace for a group of users. Along with `bucket`, `username`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + """ + return pulumi.get(self, "organization") + + @property + @pulumi.getter + def password(self) -> pulumi.Output[str]: + """ + Password of the initial admin user created in InfluxDB. This password will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `username`, and `organization`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + """ + return pulumi.get(self, "password") + + @property + @pulumi.getter(name="publiclyAccessible") + def publicly_accessible(self) -> pulumi.Output[bool]: + """ + Configures the DB instance with a public IP to facilitate access. Other resources, such as a VPC, a subnet, an internet gateway, and a route table with routes, are also required to enabled public access, in addition to this argument. See "Usage with Public Internet Access Enabled" for an example configuration with all required resources for public internet access. + """ + return pulumi.get(self, "publicly_accessible") + + @property + @pulumi.getter(name="secondaryAvailabilityZone") + def secondary_availability_zone(self) -> pulumi.Output[str]: + """ + Availability Zone in which the standby instance is located when deploying with a MultiAZ standby instance. + """ + return pulumi.get(self, "secondary_availability_zone") + + @property + @pulumi.getter + def tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]: + """ + Map of tags assigned to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + """ + return pulumi.get(self, "tags") + + @property + @pulumi.getter(name="tagsAll") + @_utilities.deprecated("""Please use `tags` instead.""") + def tags_all(self) -> pulumi.Output[Mapping[str, str]]: + """ + Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block. + """ + return pulumi.get(self, "tags_all") + + @property + @pulumi.getter + def timeouts(self) -> pulumi.Output[Optional['outputs.DbInstanceTimeouts']]: + return pulumi.get(self, "timeouts") + + @property + @pulumi.getter + def username(self) -> pulumi.Output[str]: + """ + Username of the initial admin user created in InfluxDB. Must start with a letter and can't end with a hyphen or contain two consecutive hyphens. This username will allow you to access the InfluxDB UI to perform various administrative tasks and also use the InfluxDB CLI to create an operator token. Along with `bucket`, `organization`, and `password`, this argument will be stored in the secret referred to by the `influx_auth_parameters_secret_arn` attribute. + """ + return pulumi.get(self, "username") + + @property + @pulumi.getter(name="vpcSecurityGroupIds") + def vpc_security_group_ids(self) -> pulumi.Output[Sequence[str]]: + """ + List of VPC security group IDs to associate with the DB instance. + """ + return pulumi.get(self, "vpc_security_group_ids") + + @property + @pulumi.getter(name="vpcSubnetIds") + def vpc_subnet_ids(self) -> pulumi.Output[Sequence[str]]: + """ + List of VPC subnet IDs to associate with the DB instance. Provide at least two VPC subnet IDs in different availability zones when deploying with a Multi-AZ standby. + + The following arguments are optional: + """ + return pulumi.get(self, "vpc_subnet_ids") + diff --git a/sdk/python/pulumi_aws/timestreaminfluxdb/outputs.py b/sdk/python/pulumi_aws/timestreaminfluxdb/outputs.py new file mode 100644 index 00000000000..536e9ba77a4 --- /dev/null +++ b/sdk/python/pulumi_aws/timestreaminfluxdb/outputs.py @@ -0,0 +1,152 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities +from . import outputs + +__all__ = [ + 'DbInstanceLogDeliveryConfiguration', + 'DbInstanceLogDeliveryConfigurationS3Configuration', + 'DbInstanceTimeouts', +] + +@pulumi.output_type +class DbInstanceLogDeliveryConfiguration(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "s3Configuration": + suggest = "s3_configuration" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in DbInstanceLogDeliveryConfiguration. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + DbInstanceLogDeliveryConfiguration.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + DbInstanceLogDeliveryConfiguration.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + s3_configuration: Optional['outputs.DbInstanceLogDeliveryConfigurationS3Configuration'] = None): + """ + :param 'DbInstanceLogDeliveryConfigurationS3ConfigurationArgs' s3_configuration: Configuration for S3 bucket log delivery. + """ + if s3_configuration is not None: + pulumi.set(__self__, "s3_configuration", s3_configuration) + + @property + @pulumi.getter(name="s3Configuration") + def s3_configuration(self) -> Optional['outputs.DbInstanceLogDeliveryConfigurationS3Configuration']: + """ + Configuration for S3 bucket log delivery. + """ + return pulumi.get(self, "s3_configuration") + + +@pulumi.output_type +class DbInstanceLogDeliveryConfigurationS3Configuration(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "bucketName": + suggest = "bucket_name" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in DbInstanceLogDeliveryConfigurationS3Configuration. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + DbInstanceLogDeliveryConfigurationS3Configuration.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + DbInstanceLogDeliveryConfigurationS3Configuration.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + bucket_name: str, + enabled: bool): + """ + :param str bucket_name: Name of the S3 bucket to deliver logs to. + :param bool enabled: Indicates whether log delivery to the S3 bucket is enabled. + + **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + """ + pulumi.set(__self__, "bucket_name", bucket_name) + pulumi.set(__self__, "enabled", enabled) + + @property + @pulumi.getter(name="bucketName") + def bucket_name(self) -> str: + """ + Name of the S3 bucket to deliver logs to. + """ + return pulumi.get(self, "bucket_name") + + @property + @pulumi.getter + def enabled(self) -> bool: + """ + Indicates whether log delivery to the S3 bucket is enabled. + + **Note**: Only three arguments do updates in-place: `db_parameter_group_identifier`, `log_delivery_configuration`, and `tags`. Changes to any other argument after a DB instance has been deployed will cause destruction and re-creation of the DB instance. Additionally, when `db_parameter_group_identifier` is added to a DB instance or modified, the DB instance will be updated in-place but if `db_parameter_group_identifier` is removed from a DB instance, the DB instance will be destroyed and re-created. + """ + return pulumi.get(self, "enabled") + + +@pulumi.output_type +class DbInstanceTimeouts(dict): + def __init__(__self__, *, + create: Optional[str] = None, + delete: Optional[str] = None, + update: Optional[str] = None): + """ + :param str create: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + :param str delete: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + :param str update: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + if create is not None: + pulumi.set(__self__, "create", create) + if delete is not None: + pulumi.set(__self__, "delete", delete) + if update is not None: + pulumi.set(__self__, "update", update) + + @property + @pulumi.getter + def create(self) -> Optional[str]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + return pulumi.get(self, "create") + + @property + @pulumi.getter + def delete(self) -> Optional[str]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. + """ + return pulumi.get(self, "delete") + + @property + @pulumi.getter + def update(self) -> Optional[str]: + """ + A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). + """ + return pulumi.get(self, "update") + + diff --git a/sdk/python/pulumi_aws/wafv2/web_acl.py b/sdk/python/pulumi_aws/wafv2/web_acl.py index 43946bb55cd..e577a4f3918 100644 --- a/sdk/python/pulumi_aws/wafv2/web_acl.py +++ b/sdk/python/pulumi_aws/wafv2/web_acl.py @@ -30,6 +30,7 @@ def __init__(__self__, *, custom_response_bodies: Optional[pulumi.Input[Sequence[pulumi.Input['WebAclCustomResponseBodyArgs']]]] = None, description: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, + rule_json: Optional[pulumi.Input[str]] = None, rules: Optional[pulumi.Input[Sequence[pulumi.Input['WebAclRuleArgs']]]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, token_domains: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): @@ -44,6 +45,7 @@ def __init__(__self__, *, :param pulumi.Input[Sequence[pulumi.Input['WebAclCustomResponseBodyArgs']]] custom_response_bodies: Defines custom response bodies that can be referenced by `custom_response` actions. See `custom_response_body` below for details. :param pulumi.Input[str] description: Friendly description of the WebACL. :param pulumi.Input[str] name: Friendly name of the WebACL. + :param pulumi.Input[str] rule_json: Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. :param pulumi.Input[Sequence[pulumi.Input['WebAclRuleArgs']]] rules: Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of key-value pairs to associate with the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[Sequence[pulumi.Input[str]]] token_domains: Specifies the domains that AWS WAF should accept in a web request token. This enables the use of tokens across multiple protected websites. When AWS WAF provides a token, it uses the domain of the AWS resource that the web ACL is protecting. If you don't specify a list of token domains, AWS WAF accepts tokens only for the domain of the protected resource. With a token domain list, AWS WAF accepts the resource's host domain plus all domains in the token domain list, including their prefixed subdomains. @@ -63,6 +65,8 @@ def __init__(__self__, *, pulumi.set(__self__, "description", description) if name is not None: pulumi.set(__self__, "name", name) + if rule_json is not None: + pulumi.set(__self__, "rule_json", rule_json) if rules is not None: pulumi.set(__self__, "rules", rules) if tags is not None: @@ -178,6 +182,18 @@ def name(self) -> Optional[pulumi.Input[str]]: def name(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "name", value) + @property + @pulumi.getter(name="ruleJson") + def rule_json(self) -> Optional[pulumi.Input[str]]: + """ + Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + """ + return pulumi.get(self, "rule_json") + + @rule_json.setter + def rule_json(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "rule_json", value) + @property @pulumi.getter def rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['WebAclRuleArgs']]]]: @@ -229,6 +245,7 @@ def __init__(__self__, *, description: Optional[pulumi.Input[str]] = None, lock_token: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, + rule_json: Optional[pulumi.Input[str]] = None, rules: Optional[pulumi.Input[Sequence[pulumi.Input['WebAclRuleArgs']]]] = None, scope: Optional[pulumi.Input[str]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, @@ -247,6 +264,7 @@ def __init__(__self__, *, :param pulumi.Input['WebAclDefaultActionArgs'] default_action: Action to perform if none of the `rules` contained in the WebACL match. See `default_action` below for details. :param pulumi.Input[str] description: Friendly description of the WebACL. :param pulumi.Input[str] name: Friendly name of the WebACL. + :param pulumi.Input[str] rule_json: Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. :param pulumi.Input[Sequence[pulumi.Input['WebAclRuleArgs']]] rules: Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. :param pulumi.Input[str] scope: Specifies whether this is for an AWS CloudFront distribution or for a regional application. Valid values are `CLOUDFRONT` or `REGIONAL`. To work with CloudFront, you must also specify the region `us-east-1` (N. Virginia) on the AWS provider. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of key-value pairs to associate with the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. @@ -276,6 +294,8 @@ def __init__(__self__, *, pulumi.set(__self__, "lock_token", lock_token) if name is not None: pulumi.set(__self__, "name", name) + if rule_json is not None: + pulumi.set(__self__, "rule_json", rule_json) if rules is not None: pulumi.set(__self__, "rules", rules) if scope is not None: @@ -421,6 +441,18 @@ def name(self) -> Optional[pulumi.Input[str]]: def name(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "name", value) + @property + @pulumi.getter(name="ruleJson") + def rule_json(self) -> Optional[pulumi.Input[str]]: + """ + Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + """ + return pulumi.get(self, "rule_json") + + @rule_json.setter + def rule_json(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "rule_json", value) + @property @pulumi.getter def rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['WebAclRuleArgs']]]]: @@ -507,6 +539,7 @@ def __init__(__self__, default_action: Optional[pulumi.Input[Union['WebAclDefaultActionArgs', 'WebAclDefaultActionArgsDict']]] = None, description: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, + rule_json: Optional[pulumi.Input[str]] = None, rules: Optional[pulumi.Input[Sequence[pulumi.Input[Union['WebAclRuleArgs', 'WebAclRuleArgsDict']]]]] = None, scope: Optional[pulumi.Input[str]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, @@ -524,6 +557,7 @@ def __init__(__self__, :param pulumi.Input[Union['WebAclDefaultActionArgs', 'WebAclDefaultActionArgsDict']] default_action: Action to perform if none of the `rules` contained in the WebACL match. See `default_action` below for details. :param pulumi.Input[str] description: Friendly description of the WebACL. :param pulumi.Input[str] name: Friendly name of the WebACL. + :param pulumi.Input[str] rule_json: Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. :param pulumi.Input[Sequence[pulumi.Input[Union['WebAclRuleArgs', 'WebAclRuleArgsDict']]]] rules: Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. :param pulumi.Input[str] scope: Specifies whether this is for an AWS CloudFront distribution or for a regional application. Valid values are `CLOUDFRONT` or `REGIONAL`. To work with CloudFront, you must also specify the region `us-east-1` (N. Virginia) on the AWS provider. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of key-value pairs to associate with the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. @@ -560,6 +594,7 @@ def _internal_init(__self__, default_action: Optional[pulumi.Input[Union['WebAclDefaultActionArgs', 'WebAclDefaultActionArgsDict']]] = None, description: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, + rule_json: Optional[pulumi.Input[str]] = None, rules: Optional[pulumi.Input[Sequence[pulumi.Input[Union['WebAclRuleArgs', 'WebAclRuleArgsDict']]]]] = None, scope: Optional[pulumi.Input[str]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, @@ -583,6 +618,7 @@ def _internal_init(__self__, __props__.__dict__["default_action"] = default_action __props__.__dict__["description"] = description __props__.__dict__["name"] = name + __props__.__dict__["rule_json"] = rule_json __props__.__dict__["rules"] = rules if scope is None and not opts.urn: raise TypeError("Missing required property 'scope'") @@ -618,6 +654,7 @@ def get(resource_name: str, description: Optional[pulumi.Input[str]] = None, lock_token: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, + rule_json: Optional[pulumi.Input[str]] = None, rules: Optional[pulumi.Input[Sequence[pulumi.Input[Union['WebAclRuleArgs', 'WebAclRuleArgsDict']]]]] = None, scope: Optional[pulumi.Input[str]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, @@ -641,6 +678,7 @@ def get(resource_name: str, :param pulumi.Input[Union['WebAclDefaultActionArgs', 'WebAclDefaultActionArgsDict']] default_action: Action to perform if none of the `rules` contained in the WebACL match. See `default_action` below for details. :param pulumi.Input[str] description: Friendly description of the WebACL. :param pulumi.Input[str] name: Friendly name of the WebACL. + :param pulumi.Input[str] rule_json: Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. :param pulumi.Input[Sequence[pulumi.Input[Union['WebAclRuleArgs', 'WebAclRuleArgsDict']]]] rules: Rule blocks used to identify the web requests that you want to `allow`, `block`, or `count`. See `rule` below for details. :param pulumi.Input[str] scope: Specifies whether this is for an AWS CloudFront distribution or for a regional application. Valid values are `CLOUDFRONT` or `REGIONAL`. To work with CloudFront, you must also specify the region `us-east-1` (N. Virginia) on the AWS provider. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of key-value pairs to associate with the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. @@ -663,6 +701,7 @@ def get(resource_name: str, __props__.__dict__["description"] = description __props__.__dict__["lock_token"] = lock_token __props__.__dict__["name"] = name + __props__.__dict__["rule_json"] = rule_json __props__.__dict__["rules"] = rules __props__.__dict__["scope"] = scope __props__.__dict__["tags"] = tags @@ -756,6 +795,14 @@ def name(self) -> pulumi.Output[str]: """ return pulumi.get(self, "name") + @property + @pulumi.getter(name="ruleJson") + def rule_json(self) -> pulumi.Output[Optional[str]]: + """ + Raw JSON string to allow more than three nested statements. Conflicts with `rule` attribute. This is for advanced use cases where more than 3 levels of nested statements are required. **There is no drift detection at this time**. If you use this attribute instead of `rule`, you will be foregoing drift detection. See the AWS [documentation](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html) for the JSON structure. + """ + return pulumi.get(self, "rule_json") + @property @pulumi.getter def rules(self) -> pulumi.Output[Optional[Sequence['outputs.WebAclRule']]]: diff --git a/upstream b/upstream index 2856a79ce61..534f273aa98 160000 --- a/upstream +++ b/upstream @@ -1 +1 @@ -Subproject commit 2856a79ce614422b1dc21adbcec2ebc56982ffab +Subproject commit 534f273aa98a0d26b59656ca677fd07d733e0a57