@@ -243,10 +243,9 @@ func testAccKnowledgeBase_tags(t *testing.T) {
243243 })
244244}
245245
246- func testAccKnowledgeBase_OpenSearch_basic (t * testing.T ) {
246+ func testAccKnowledgeBase_OpenSearchServerless_basic (t * testing.T ) {
247247 ctx := acctest .Context (t )
248248 collectionName := skipIfOSSCollectionNameEnvVarNotSet (t )
249-
250249 var knowledgebase awstypes.KnowledgeBase
251250 rName := sdkacctest .RandomWithPrefix (acctest .ResourcePrefix )
252251 resourceName := "aws_bedrockagent_knowledge_base.test"
@@ -261,7 +260,7 @@ func testAccKnowledgeBase_OpenSearch_basic(t *testing.T) {
261260 CheckDestroy : testAccCheckKnowledgeBaseDestroy (ctx ),
262261 Steps : []resource.TestStep {
263262 {
264- Config : testAccKnowledgeBaseConfig_OpenSearch_basic (rName , collectionName , foundationModel ),
263+ Config : testAccKnowledgeBaseConfig_OpenSearchServerless_basic (rName , collectionName , foundationModel ),
265264 Check : resource .ComposeTestCheckFunc (
266265 testAccCheckKnowledgeBaseExists (ctx , resourceName , & knowledgebase ),
267266 resource .TestCheckResourceAttrPair (resourceName , names .AttrRoleARN , "aws_iam_role.test" , names .AttrARN ),
@@ -287,10 +286,9 @@ func testAccKnowledgeBase_OpenSearch_basic(t *testing.T) {
287286 })
288287}
289288
290- func testAccKnowledgeBase_OpenSearch_update (t * testing.T ) {
289+ func testAccKnowledgeBase_OpenSearchServerless_update (t * testing.T ) {
291290 ctx := acctest .Context (t )
292291 collectionName := skipIfOSSCollectionNameEnvVarNotSet (t )
293-
294292 var knowledgebase awstypes.KnowledgeBase
295293 rName := sdkacctest .RandomWithPrefix (acctest .ResourcePrefix )
296294 resourceName := "aws_bedrockagent_knowledge_base.test"
@@ -305,7 +303,7 @@ func testAccKnowledgeBase_OpenSearch_update(t *testing.T) {
305303 CheckDestroy : testAccCheckKnowledgeBaseDestroy (ctx ),
306304 Steps : []resource.TestStep {
307305 {
308- Config : testAccKnowledgeBaseConfig_OpenSearch_basic (rName , collectionName , foundationModel ),
306+ Config : testAccKnowledgeBaseConfig_OpenSearchServerless_basic (rName , collectionName , foundationModel ),
309307 Check : resource .ComposeTestCheckFunc (
310308 testAccCheckKnowledgeBaseExists (ctx , resourceName , & knowledgebase ),
311309 resource .TestCheckResourceAttr (resourceName , names .AttrName , rName ),
@@ -329,7 +327,7 @@ func testAccKnowledgeBase_OpenSearch_update(t *testing.T) {
329327 ImportStateVerify : true ,
330328 },
331329 {
332- Config : testAccKnowledgeBaseConfig_OpenSearch_update (rName , collectionName , foundationModel ),
330+ Config : testAccKnowledgeBaseConfig_OpenSearchServerless_update (rName , collectionName , foundationModel ),
333331 Check : resource .ComposeTestCheckFunc (
334332 testAccCheckKnowledgeBaseExists (ctx , resourceName , & knowledgebase ),
335333 resource .TestCheckResourceAttr (resourceName , names .AttrName , rName + "-updated" ),
@@ -357,10 +355,9 @@ func testAccKnowledgeBase_OpenSearch_update(t *testing.T) {
357355 })
358356}
359357
360- func testAccKnowledgeBase_OpenSearch_supplementalDataStorage (t * testing.T ) {
358+ func testAccKnowledgeBase_OpenSearchServerless_supplementalDataStorage (t * testing.T ) {
361359 ctx := acctest .Context (t )
362360 collectionName := skipIfOSSCollectionNameEnvVarNotSet (t )
363-
364361 var knowledgebase awstypes.KnowledgeBase
365362 rName := sdkacctest .RandomWithPrefix (acctest .ResourcePrefix )
366363 resourceName := "aws_bedrockagent_knowledge_base.test"
@@ -375,7 +372,7 @@ func testAccKnowledgeBase_OpenSearch_supplementalDataStorage(t *testing.T) {
375372 CheckDestroy : testAccCheckKnowledgeBaseDestroy (ctx ),
376373 Steps : []resource.TestStep {
377374 {
378- Config : testAccKnowledgeBaseConfig_OpenSearch_supplementalDataStorage (rName , collectionName , foundationModel ),
375+ Config : testAccKnowledgeBaseConfig_OpenSearchServerless_supplementalDataStorage (rName , collectionName , foundationModel ),
379376 Check : resource .ComposeTestCheckFunc (
380377 testAccCheckKnowledgeBaseExists (ctx , resourceName , & knowledgebase ),
381378 resource .TestCheckResourceAttr (resourceName , "knowledge_base_configuration.#" , "1" ),
@@ -449,16 +446,6 @@ func testAccKnowledgeBase_OpenSearchManagedCluster_basic(t *testing.T) {
449446 rName := sdkacctest .RandomWithPrefix (acctest .ResourcePrefix )
450447 resourceName := "aws_bedrockagent_knowledge_base.test"
451448 foundationModel := "amazon.titan-embed-text-v2:0"
452- testExternalProviders := map [string ]resource.ExternalProvider {
453- "opensearch" : {
454- Source : "opensearch-project/opensearch" ,
455- VersionConstraint : "~> 2.2.0" ,
456- },
457- "random" : {
458- Source : "hashicorp/random" ,
459- VersionConstraint : "~> 3.5.0" ,
460- },
461- }
462449
463450 resource .Test (t , resource.TestCase {
464451 PreCheck : func () {
@@ -467,37 +454,43 @@ func testAccKnowledgeBase_OpenSearchManagedCluster_basic(t *testing.T) {
467454 },
468455 ErrorCheck : acctest .ErrorCheck (t , names .BedrockAgentServiceID ),
469456 ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories ,
470- ExternalProviders : testExternalProviders ,
471- CheckDestroy : testAccCheckKnowledgeBaseDestroy (ctx ),
457+ ExternalProviders : map [string ]resource.ExternalProvider {
458+ "opensearch" : {
459+ Source : "opensearch-project/opensearch" ,
460+ VersionConstraint : "~> 2.2.0" ,
461+ },
462+ },
463+ CheckDestroy : testAccCheckKnowledgeBaseDestroy (ctx ),
472464 Steps : []resource.TestStep {
473465 {
474466 Config : testAccKnowledgeBaseConfig_OpenSearchManagedCluster_basic (rName , foundationModel ),
475467 Check : resource .ComposeTestCheckFunc (
476468 testAccCheckKnowledgeBaseExists (ctx , resourceName , & knowledgebase ),
477- resource .TestCheckResourceAttr (resourceName , names .AttrName , rName ),
478- resource .TestCheckResourceAttr (resourceName , "knowledge_base_configuration.#" , "1" ),
479- resource .TestCheckResourceAttr (resourceName , "knowledge_base_configuration.0.vector_knowledge_base_configuration.#" , "1" ),
480- resource .TestCheckResourceAttr (resourceName , "knowledge_base_configuration.0.type" , "VECTOR" ),
481- resource .TestCheckResourceAttr (resourceName , "storage_configuration.#" , "1" ),
482- resource .TestCheckResourceAttr (resourceName , "storage_configuration.0.type" , "OPENSEARCH_MANAGED_CLUSTER" ),
483- resource .TestCheckResourceAttr (resourceName , "storage_configuration.0.opensearch_managed_cluster_configuration.#" , "1" ),
484- resource .TestCheckResourceAttr (resourceName , "storage_configuration.0.opensearch_managed_cluster_configuration.0.vector_index_name" , "knowledge-index" ),
485- resource .TestCheckResourceAttr (resourceName , "storage_configuration.0.opensearch_managed_cluster_configuration.0.field_mapping.#" , "1" ),
486- resource .TestCheckResourceAttr (resourceName , "storage_configuration.0.opensearch_managed_cluster_configuration.0.field_mapping.0.vector_field" , "vector_embedding" ),
487- resource .TestCheckResourceAttr (resourceName , "storage_configuration.0.opensearch_managed_cluster_configuration.0.field_mapping.0.text_field" , "text" ),
488- resource .TestCheckResourceAttr (resourceName , "storage_configuration.0.opensearch_managed_cluster_configuration.0.field_mapping.0.metadata_field" , "metadata" ),
489469 ),
490- },
491- {
492- Config : testAccKnowledgeBaseConfig_OpenSearchManagedCluster_basic (rName , foundationModel ),
493- ResourceName : resourceName ,
494- ImportStateKind : resource .ImportBlockWithID ,
495- ImportState : true ,
496- ImportPlanChecks : resource.ImportPlanChecks {
470+ ConfigPlanChecks : resource.ConfigPlanChecks {
497471 PreApply : []plancheck.PlanCheck {
498- plancheck .ExpectKnownValue (resourceName , tfjsonpath . New ( names . AttrID ), knownvalue . NotNull () ),
472+ plancheck .ExpectResourceAction (resourceName , plancheck . ResourceActionCreate ),
499473 },
500474 },
475+ ConfigStateChecks : []statecheck.StateCheck {
476+ statecheck .ExpectKnownValue (resourceName , tfjsonpath .New ("knowledge_base_configuration" ), knownvalue .ListExact ([]knownvalue.Check {
477+ knownvalue .MapExact (map [string ]knownvalue.Check {
478+ "kendra_knowledge_base_configuration" : knownvalue .ListSizeExact (0 ),
479+ names .AttrType : tfknownvalue .StringExact (awstypes .KnowledgeBaseTypeVector ),
480+ "vector_knowledge_base_configuration" : knownvalue .ListSizeExact (1 ),
481+ }),
482+ })),
483+ statecheck .ExpectKnownValue (resourceName , tfjsonpath .New ("storage_configuration" ), knownvalue .ListExact ([]knownvalue.Check {
484+ knownvalue .MapExact (map [string ]knownvalue.Check {
485+ "opensearch_managed_cluster_configuration" : knownvalue .ListSizeExact (1 ),
486+ "opensearch_serverless_configuration" : knownvalue .ListSizeExact (0 ),
487+ names .AttrType : tfknownvalue .StringExact (awstypes .KnowledgeBaseStorageTypeOpensearchManagedCluster ),
488+ "pinecone_configuration" : knownvalue .ListSizeExact (0 ),
489+ "rds_configuration" : knownvalue .ListSizeExact (0 ),
490+ "redis_enterprise_cloud_configuration" : knownvalue .ListSizeExact (0 ),
491+ }),
492+ })),
493+ },
501494 },
502495 },
503496 })
@@ -746,7 +739,7 @@ resource "aws_bedrockagent_knowledge_base" "test" {
746739` , rName , model , tag1Key , tag1Value , tag2Key , tag2Value ))
747740}
748741
749- func testAccKnowledgeBaseConfigBase_openSearch (rName , collectionName , model string ) string {
742+ func testAccKnowledgeBaseConfig_baseOpenSearchServerless (rName , collectionName , model string ) string {
750743 return fmt .Sprintf (`
751744data "aws_caller_identity" "current" {}
752745data "aws_region" "current" {}
@@ -884,10 +877,8 @@ resource "aws_opensearchserverless_access_policy" "test" {
884877` , rName , collectionName , model )
885878}
886879
887- func testAccKnowledgeBaseConfig_OpenSearch_basic (rName , collectionName , model string ) string {
888- return acctest .ConfigCompose (
889- testAccKnowledgeBaseConfigBase_openSearch (rName , collectionName , model ),
890- fmt .Sprintf (`
880+ func testAccKnowledgeBaseConfig_OpenSearchServerless_basic (rName , collectionName , model string ) string {
881+ return acctest .ConfigCompose (testAccKnowledgeBaseConfig_baseOpenSearchServerless (rName , collectionName , model ), fmt .Sprintf (`
891882resource "aws_bedrockagent_knowledge_base" "test" {
892883 depends_on = [
893884 aws_iam_role_policy_attachment.test,
@@ -920,10 +911,8 @@ resource "aws_bedrockagent_knowledge_base" "test" {
920911` , rName , model ))
921912}
922913
923- func testAccKnowledgeBaseConfig_OpenSearch_update (rName , collectionName , model string ) string {
924- return acctest .ConfigCompose (
925- testAccKnowledgeBaseConfigBase_openSearch (rName , collectionName , model ),
926- fmt .Sprintf (`
914+ func testAccKnowledgeBaseConfig_OpenSearchServerless_update (rName , collectionName , model string ) string {
915+ return acctest .ConfigCompose (testAccKnowledgeBaseConfig_baseOpenSearchServerless (rName , collectionName , model ), fmt .Sprintf (`
927916resource "aws_bedrockagent_knowledge_base" "test" {
928917 depends_on = [
929918 aws_iam_role_policy_attachment.test,
@@ -957,10 +946,8 @@ resource "aws_bedrockagent_knowledge_base" "test" {
957946` , rName , model ))
958947}
959948
960- func testAccKnowledgeBaseConfig_OpenSearch_supplementalDataStorage (rName , collectionName , model string ) string {
961- return acctest .ConfigCompose (
962- testAccKnowledgeBaseConfigBase_openSearch (rName , collectionName , model ),
963- fmt .Sprintf (`
949+ func testAccKnowledgeBaseConfig_OpenSearchServerless_supplementalDataStorage (rName , collectionName , model string ) string {
950+ return acctest .ConfigCompose (testAccKnowledgeBaseConfig_baseOpenSearchServerless (rName , collectionName , model ), fmt .Sprintf (`
964951resource "aws_s3_bucket" "test" {
965952 bucket = %[1]q
966953 force_destroy = true
@@ -1121,10 +1108,6 @@ terraform {
11211108 source = "opensearch-project/opensearch"
11221109 version = "~> 2.2.0"
11231110 }
1124- random = {
1125- source = "hashicorp/random"
1126- version = "~> 3.5.0"
1127- }
11281111 }
11291112}
11301113
@@ -1158,7 +1141,7 @@ resource "aws_iam_role" "bedrock_kb_role" {
11581141}
11591142
11601143resource "aws_iam_policy" "bedrock_models_access" {
1161- name. = "bedrock-%[1]s"
1144+ name = "bedrock-%[1]s"
11621145 description = "IAM policy for Amazon Bedrock to access embedding models"
11631146
11641147 policy = jsonencode({
@@ -1235,21 +1218,6 @@ resource "aws_iam_role_policy_attachment" "opensearch_access" {
12351218 policy_arn = aws_iam_policy.opensearch_access.arn
12361219}
12371220
1238- resource "random_password" "opensearch_master" {
1239- length = 16
1240- special = true
1241- min_lower = 1
1242- min_numeric = 1
1243- min_special = 1
1244- min_upper = 1
1245- override_special = "!#$&*()-_=+"
1246-
1247- # Don't replace the password on each apply
1248- lifecycle {
1249- ignore_changes = [length, special, override_special]
1250- }
1251- }
1252-
12531221resource "aws_opensearch_domain" "knowledge_base" {
12541222 domain_name = substr(%[1]q, 0, 28)
12551223 engine_version = "OpenSearch_3.1"
@@ -1292,7 +1260,7 @@ resource "aws_opensearch_domain" "knowledge_base" {
12921260
12931261 master_user_options {
12941262 master_user_name = "admin"
1295- master_user_password = random_password.opensearch_master.result
1263+ master_user_password = "Barbarbarbar1!"
12961264 }
12971265 }
12981266
@@ -1331,7 +1299,7 @@ locals {
13311299provider "opensearch" {
13321300 url = "https://${aws_opensearch_domain.knowledge_base.endpoint}"
13331301 username = "admin"
1334- password = random_password.opensearch_master.result
1302+ password = aws_opensearch_domain.knowledge_base.advanced_security_options[0].master_user_options[0].master_user_password
13351303 insecure = false
13361304 aws_region = data.aws_region.current.region
13371305 healthcheck = false
0 commit comments