---
title: "AWS Bedrock KnowledgeBase RAG サンプル: 3回 .tfstate 管理"
description: "AWS Bedrock KnowledgeBase RAG サンプル: 3回 .tfstate 管理"
image: https://www.spin-dd.com/hubfs/geralt-woman-1446557.jpg
---

[![SPIN D&D](https://www.spin-dd.com/hubfs/raw_assets/public/spindd/images/logo_white.png)](https://www.spin-dd.com/home)

[企業情報](https://www.spin-dd.com/company) [事業紹介](https://www.spin-dd.com/service) [お知らせ](https://www.spin-dd.com/news) [採用情報](https://www.wantedly.com/companies/spin-dd) [無料相談](https://www.spin-dd.com/contact)

⋮ ✕

[トップ](https://www.spin-dd.com/) › [ニュース](https://www.spin-dd.com/news) › 詳細ページ

NEWS

# ニュース

2026.04.06 技術ブログ

## AWS Bedrock KnowledgeBase RAG サンプル: 3回 .tfstate 管理

![](https://www.spin-dd.com/hubfs/geralt-woman-1446557.jpg)

S3 バックエンド

本サンプルでは OpenTofu を IaC として利用することで AWS リソースをプログラム実行することで生成しています。 OpenTofu は登録管理してあるリソースのデータベースを .tfstate というファイル(デフォルトでは terraform.tfstate)で管理します。 [(Purpose of Terraform State](https://developer.hashicorp.com/terraform/language/state/purpose))

OpenTofu の操作を複数人で行う場合、.tfstate を共有する必要があります。 ([The terraform\_remote\_state Data Source](https://developer.hashicorp.com/terraform/language/state/remote-state-data)) 方法はいくつかありますが、 バックエンドを選択することで指定することができます。

本サンプルでは[S3 バックエンド](https://developer.hashicorp.com/terraform/language/backend/s3)を利用しています。

 

DynamoDB でのロック管理

 

リソースの更新状態に対してロックをかける必要があります。 ([State Locking](https://developer.hashicorp.com/terraform/language/state/locking))  
S3バックエンド では DynamoDB のテーブルでロック管理できるようになっています。

 

S3 バックエンドの構築

実際に構築するための OpenTofu の実行で、同時にバックエンドリソースを作ることができないので、まずバックエンドリソース(S3 と DynamoDB) をつくります。  
OpenTofu をつかってバックエンドリソースを構築します:

 

`docker compose run --rm tool tofu -chdir=tofu/admin init`  
`docker compose run --rm tool tofu -chdir=tofu/admin plan -out admin.plan`  
`docker compose run --rm tool tofu -chdir=tofu/admin apply admin.plan`

 

本サンプルでの OpenTofu のディレクトリツリー

 

tofu ディレクトリにソースコードを管理しています。

 

`% tree tofu -d`  
`tofu`  
`├── admin`  
`├── modules`  
`│   ├── apigw`  
`│   ├── aurora`  
`│   ├── bedrock`  
`│   ├── ecr`  
`│   ├── saving`  
`│   ├── tfstate`  
`│   ├── tools`  
`│   └── vpc`  
`└── rag`

 

以下の内容のリソースを構築します:

| ディレクトリ | 内容 |
| --- | --- |
| admin | OpenTofu のバックエンドリソース構築 (S3, DynamoDB) |
| rag | 本サンプルで実際に構築するリソース |
| modules | それぞれのリソース定義を モジュール化 |

modules については次で説明します。

モジュール化

moduels はさらにリソースごとに分けられています:

| ディレクトリ | 内容 |
| --- | --- |
| tfstate | OpenTofu バックエンドリソースの管理 |
| vpc | VPC(RDS のネットワークなどの定義する) |
| aurora | RDS で　 PostgreSQL を構築 |
| ecr | Docker イメージを管理 |
| bedrock | Bedrock Knowledge Base 関連を構築 |
| apigw | Web API インターフェースと処理の実装 |
| tools | savingで使うツールセット |
| saving | Auroro を夜間停止 |

これらのモジュールを組み合わせて admin と rag の構築を行うようにしています。

このような構成を採用するメリットは以下の２点です:

1.似たような AWS プロジェクトにコピペして使いやすい。  
2.同一リソースを複数環境で定義しやすい。(例えば、 rag\_prod, rag\_stage のように分けるなど)

 

リソースネーミングルール

本サンプルでは {サービス名}-{環境} をリソースのプレフィックスとして使うようにしています。

`  symbol = {`  
`    service = var.service`  
`    env     = var.env`  
`    prefix  = "${var.service}-${var.env}"`  
`  }`

 

これらは、環境変数で定義できるようにしています。 (TF\_VAR\_ をプレフィックスにつけた変数 ([Environment Variables](https://developer.hashicorp.com/terraform/language/values/variables#environment-variables)))  
何もしていないと sample-ai がリソースのプレフィックスになります。

 

リージョン us-west-2

 

本サンプルでは[Anthropic Claude 3 Sonnet](https://www.anthropic.com/news/claude-3-5-sonnet)で Knowledge base を動作させたいので、 us-west-2 で全てのリソースを作っています。

[← 前の記事 AWS Bedrock KnowledgeBase RAG ...](https://www.spin-dd.com/news/202402) [次の記事 → AWS Bedrock KnowledgeBase RAG ...](https://www.spin-dd.com/news/202404)

[一覧へ戻る](https://www.spin-dd.com/news)

[![SPIN D&D](https://www.spin-dd.com/hubfs/raw_assets/public/spindd/images/logo_white.png)](https://www.spin-dd.com/)

東京都文京区本郷1-19-6  
太平ビル本館2階  
[03-5802-6170](tel:0358026170)

- [企業情報](https://www.spin-dd.com/company)
- [お知らせ](https://www.spin-dd.com/news)

- [システム構築支援](https://www.spin-dd.com/service)
- [Webマーケティング](https://www.spin-dd.com/service-2)
- [建物管理SaaS](https://www.spin-dd.com/builsys)

- [採用](https://www.wantedly.com/companies/spin-dd)
- [お問い合わせ](https://www.spin-dd.com/contact)

©  SPIN D&D

[プライバシーポリシー](https://www.spin-dd.com/privacy)

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "奈良 英樹",
    "url" : "https://www.spin-dd.com/news/author/奈良-英樹"
  },
  "dateModified" : "2026-04-06T07:24:12.994Z",
  "datePublished" : "2026-04-06T07:22:30.000Z",
  "headline" : "AWS Bedrock KnowledgeBase RAG サンプル: 3回 .tfstate 管理",
  "image" : [ "https://www.spin-dd.com/hubfs/geralt-woman-1446557.jpg" ],
  "mainEntityOfPage" : {
    "@id" : "https://www.spin-dd.com/news/202403",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject"
    }
  }
}
```