<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Import on Tarragon</title><link>https://tarrragon.github.io/blog/tags/import/</link><description>Recent content in Import on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 26 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/import/index.xml" rel="self" type="application/rss+xml"/><item><title>Unmanaged Resource 批次 Import 工作流</title><link>https://tarrragon.github.io/blog/infra/takeover/partial-iac-bulk-import/</link><pubDate>Fri, 26 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/infra/takeover/partial-iac-bulk-import/</guid><description>&lt;p>盤點階段產出的 managed vs unmanaged 兩欄清單裡（見&lt;a href="https://tarrragon.github.io/blog/infra/takeover/partial-iac-no-docs/" data-link-title="有半套 IaC 但文件缺失的環境接管" data-link-desc="IaC 覆蓋不完整、部分資源在 state 外、文件缺失的環境怎麼盤點差距、修復 state 健康、收斂 drift 並重建文件">盤點流程&lt;/a>），unmanaged 那一欄的每個資源都要決定：納入 Terraform 管理、還是維持手動並記錄原因。這篇處理的是「決定要納管」的資源怎麼有系統地 import，而不是一次全部倒進去。&lt;/p>
&lt;h2 id="優先序先-import-什麼">優先序：先 import 什麼&lt;/h2>
&lt;p>不是所有 unmanaged resource 都值得立刻 import。判斷依據是「這個資源不在 IaC 裡的風險有多高」和「import 的操作複雜度有多低」的交集。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>優先級&lt;/th>
 &lt;th>資源類型&lt;/th>
 &lt;th>理由&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>1&lt;/td>
 &lt;td>Security group、IAM role / policy&lt;/td>
 &lt;td>安全邊界資源，手動改動的風險最高，且 import 後 plan 驗證直覺&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>2&lt;/td>
 &lt;td>VPC、subnet、route table&lt;/td>
 &lt;td>網路地基，其他資源依賴它們，import 後上層資源的引用才能從 hardcode 換成引用&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>3&lt;/td>
 &lt;td>RDS、ElastiCache&lt;/td>
 &lt;td>有狀態資源，import 操作本身不改資源，但 plan 不匹配時的修正要謹慎&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>4&lt;/td>
 &lt;td>S3 bucket、CloudWatch log group&lt;/td>
 &lt;td>低風險、低依賴，但數量可能很多，適合最後批次處理&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>5&lt;/td>
 &lt;td>EC2 instance、Lambda&lt;/td>
 &lt;td>變動頻繁、生命週期短，import 的 ROI 低——考慮是否改用 IaC 重建而非 import&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>優先級 1-2 的資源是地基層，import 後能讓後續的 IaC 引用鏈從 hardcode ID 換成資源屬性引用，這是 import 的結構性收益。優先級 5 的資源如果生命週期短（隨部署替換），用 IaC 重新定義再 apply 比逆向 import 划算。&lt;/p>
&lt;h2 id="import-block-語法terraform-15">import block 語法（Terraform 1.5+）&lt;/h2>
&lt;p>Terraform 1.5 引入了宣告式 import block，取代舊版的 &lt;code>terraform import&lt;/code> CLI 指令。宣告式的優勢是 import 本身進版本控制、可 review、可回滾。&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-hcl" data-lang="hcl">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="k">import&lt;/span> {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">&lt;span class="n"> to&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">aws_security_group&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">api&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">&lt;span class="n"> id&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;sg-0abc123def456&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">5&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">6&lt;/span>&lt;span class="cl">&lt;span class="k">import&lt;/span> {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">7&lt;/span>&lt;span class="cl">&lt;span class="n"> to&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">aws_db_instance&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">primary&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">8&lt;/span>&lt;span class="cl">&lt;span class="n"> id&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;app-prod-primary&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">9&lt;/span>&lt;span class="cl">}&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>to&lt;/code> 是 Terraform 裡的資源地址（resource type + name），&lt;code>id&lt;/code> 是雲端的資源識別碼。每種資源的 id 格式不同：security group 用 &lt;code>sg-xxx&lt;/code>、RDS 用 DB identifier、S3 用 bucket name、IAM role 用 role name。格式查 Terraform provider 文件的 Import 段。&lt;/p>
&lt;p>多個 import block 可以寫在同一個檔案裡（如 &lt;code>imports.tf&lt;/code>），一次 plan/apply 處理整批。apply 完成後這些 import block 可以刪除——它們的作用是觸發 import 動作，import 完成後 state 已經記住了對應關係。&lt;/p>
&lt;h2 id="generate-config-out-工作流">generate-config-out 工作流&lt;/h2>
&lt;p>import block 只把資源綁進 state，不會自動產生對應的 HCL 定義。Terraform 1.5+ 提供 &lt;code>-generate-config-out&lt;/code> flag 自動反推 HCL：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">terraform plan -generate-config-out&lt;span class="o">=&lt;/span>generated_resources.tf&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>這個指令會：&lt;/p>
&lt;ol>
&lt;li>讀取所有 import block&lt;/li>
&lt;li>查詢每個資源在雲端的真實屬性&lt;/li>
&lt;li>把屬性寫成 HCL 資源定義，輸出到指定檔案&lt;/li>
&lt;li>在 plan 輸出中標示每個資源為 &lt;code>import&lt;/code>（不是 create/change/destroy）&lt;/li>
&lt;/ol>
&lt;p>生成的 HCL 是起點，需要人工 review 後才能正式使用。&lt;/p></description><content:encoded><![CDATA[<p>盤點階段產出的 managed vs unmanaged 兩欄清單裡（見<a href="/blog/infra/takeover/partial-iac-no-docs/" data-link-title="有半套 IaC 但文件缺失的環境接管" data-link-desc="IaC 覆蓋不完整、部分資源在 state 外、文件缺失的環境怎麼盤點差距、修復 state 健康、收斂 drift 並重建文件">盤點流程</a>），unmanaged 那一欄的每個資源都要決定：納入 Terraform 管理、還是維持手動並記錄原因。這篇處理的是「決定要納管」的資源怎麼有系統地 import，而不是一次全部倒進去。</p>
<h2 id="優先序先-import-什麼">優先序：先 import 什麼</h2>
<p>不是所有 unmanaged resource 都值得立刻 import。判斷依據是「這個資源不在 IaC 裡的風險有多高」和「import 的操作複雜度有多低」的交集。</p>
<table>
  <thead>
      <tr>
          <th>優先級</th>
          <th>資源類型</th>
          <th>理由</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1</td>
          <td>Security group、IAM role / policy</td>
          <td>安全邊界資源，手動改動的風險最高，且 import 後 plan 驗證直覺</td>
      </tr>
      <tr>
          <td>2</td>
          <td>VPC、subnet、route table</td>
          <td>網路地基，其他資源依賴它們，import 後上層資源的引用才能從 hardcode 換成引用</td>
      </tr>
      <tr>
          <td>3</td>
          <td>RDS、ElastiCache</td>
          <td>有狀態資源，import 操作本身不改資源，但 plan 不匹配時的修正要謹慎</td>
      </tr>
      <tr>
          <td>4</td>
          <td>S3 bucket、CloudWatch log group</td>
          <td>低風險、低依賴，但數量可能很多，適合最後批次處理</td>
      </tr>
      <tr>
          <td>5</td>
          <td>EC2 instance、Lambda</td>
          <td>變動頻繁、生命週期短，import 的 ROI 低——考慮是否改用 IaC 重建而非 import</td>
      </tr>
  </tbody>
</table>
<p>優先級 1-2 的資源是地基層，import 後能讓後續的 IaC 引用鏈從 hardcode ID 換成資源屬性引用，這是 import 的結構性收益。優先級 5 的資源如果生命週期短（隨部署替換），用 IaC 重新定義再 apply 比逆向 import 划算。</p>
<h2 id="import-block-語法terraform-15">import block 語法（Terraform 1.5+）</h2>
<p>Terraform 1.5 引入了宣告式 import block，取代舊版的 <code>terraform import</code> CLI 指令。宣告式的優勢是 import 本身進版本控制、可 review、可回滾。</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-hcl" data-lang="hcl"><span class="line"><span class="ln">1</span><span class="cl"><span class="k">import</span> {
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="n">  to</span> <span class="o">=</span> <span class="k">aws_security_group</span><span class="p">.</span><span class="k">api</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">  id</span> <span class="o">=</span> <span class="s2">&#34;sg-0abc123def456&#34;</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">}
</span></span><span class="line"><span class="ln">5</span><span class="cl">
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="k">import</span> {
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="n">  to</span> <span class="o">=</span> <span class="k">aws_db_instance</span><span class="p">.</span><span class="k">primary</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl"><span class="n">  id</span> <span class="o">=</span> <span class="s2">&#34;app-prod-primary&#34;</span>
</span></span><span class="line"><span class="ln">9</span><span class="cl">}</span></span></code></pre></div><p><code>to</code> 是 Terraform 裡的資源地址（resource type + name），<code>id</code> 是雲端的資源識別碼。每種資源的 id 格式不同：security group 用 <code>sg-xxx</code>、RDS 用 DB identifier、S3 用 bucket name、IAM role 用 role name。格式查 Terraform provider 文件的 Import 段。</p>
<p>多個 import block 可以寫在同一個檔案裡（如 <code>imports.tf</code>），一次 plan/apply 處理整批。apply 完成後這些 import block 可以刪除——它們的作用是觸發 import 動作，import 完成後 state 已經記住了對應關係。</p>
<h2 id="generate-config-out-工作流">generate-config-out 工作流</h2>
<p>import block 只把資源綁進 state，不會自動產生對應的 HCL 定義。Terraform 1.5+ 提供 <code>-generate-config-out</code> flag 自動反推 HCL：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">terraform plan -generate-config-out<span class="o">=</span>generated_resources.tf</span></span></code></pre></div><p>這個指令會：</p>
<ol>
<li>讀取所有 import block</li>
<li>查詢每個資源在雲端的真實屬性</li>
<li>把屬性寫成 HCL 資源定義，輸出到指定檔案</li>
<li>在 plan 輸出中標示每個資源為 <code>import</code>（不是 create/change/destroy）</li>
</ol>
<p>生成的 HCL 是起點，需要人工 review 後才能正式使用。</p>
<h2 id="生成-hcl-的-review-要點">生成 HCL 的 review 要點</h2>
<p>自動生成的 code 有幾個常見問題需要修正：</p>
<h3 id="缺少-lifecycle-設定">缺少 lifecycle 設定</h3>
<p>生成的 code 不會包含 <code>lifecycle</code> block。有狀態資源（RDS、S3）需要手動加上保護：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-hcl" data-lang="hcl"><span class="line"><span class="ln">1</span><span class="cl"><span class="k">resource</span> <span class="s2">&#34;aws_db_instance&#34; &#34;primary&#34;</span> {<span class="c1">
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="c1">  # ... generated attributes ...
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="c1"></span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">  <span class="k">lifecycle</span> {
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="n">    prevent_destroy</span> <span class="o">=</span> <span class="kt">true</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">  }
</span></span><span class="line"><span class="ln">7</span><span class="cl">}</span></span></code></pre></div><p>沒加 <code>prevent_destroy</code> 的 stateful 資源，未來某次 plan 如果判定需要 replace，apply 會先刪除再重建——資料跟著消失。</p>
<h3 id="預設值與隱含屬性">預設值與隱含屬性</h3>
<p>雲端資源有些屬性是由平台自動設定的（如 RDS 的 <code>ca_cert_identifier</code>、EC2 的 <code>credit_specification</code>），生成的 code 會把這些都寫出來。下次平台更新預設值時，plan 會顯示 drift。review 時判斷：這個屬性是刻意設定的（保留），還是平台預設的（刪掉、讓 Terraform 接受平台預設）。</p>
<p>判斷方法：如果一個屬性的值跟 provider 文件裡的 default 一致，通常可以刪掉。如果不確定，先保留——保留多餘的屬性只是 code 冗長，刪錯屬性可能在下次 apply 時改變資源行為。</p>
<h3 id="provider-特有的-quirk">provider 特有的 quirk</h3>
<p>不同 provider 有各自的 import 陷阱：</p>
<table>
  <thead>
      <tr>
          <th>資源類型</th>
          <th>常見 quirk</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>aws_security_group</code></td>
          <td>inline <code>ingress</code>/<code>egress</code> block 與獨立的 <code>aws_security_group_rule</code> 衝突，選其一</td>
      </tr>
      <tr>
          <td><code>aws_s3_bucket</code></td>
          <td>Terraform AWS provider 4.x 把 bucket 的子屬性（versioning、encryption）拆成獨立資源</td>
      </tr>
      <tr>
          <td><code>aws_iam_role</code></td>
          <td><code>assume_role_policy</code> 是 JSON 字串，生成的 code 可能把 JSON 格式化方式跟 provider 預期不一致</td>
      </tr>
      <tr>
          <td><code>aws_db_instance</code></td>
          <td><code>password</code> 屬性不會被 import（敏感值），需要手動設定或引用 Secrets Manager</td>
      </tr>
  </tbody>
</table>
<p>security group 的 inline vs 獨立規則問題最常見：如果生成的 code 用 inline <code>ingress</code> block，但環境裡同時有獨立的 <code>aws_security_group_rule</code> 指向同一個 SG，兩者會互相打架。統一選一種寫法——多數情況用獨立 rule 更彈性。</p>
<h2 id="批次策略">批次策略</h2>
<p>一次 import 太多資源會讓 plan 輸出太長、review 不了。按服務類型分批，每批 5-15 個資源：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">批次 1: security groups (所有 SG + 對應的 rules)
</span></span><span class="line"><span class="ln">2</span><span class="cl">批次 2: VPC + subnets + route tables + NAT
</span></span><span class="line"><span class="ln">3</span><span class="cl">批次 3: IAM roles + policies
</span></span><span class="line"><span class="ln">4</span><span class="cl">批次 4: RDS instances + subnet groups + parameter groups
</span></span><span class="line"><span class="ln">5</span><span class="cl">批次 5: S3 buckets + bucket policies
</span></span><span class="line"><span class="ln">6</span><span class="cl">批次 6: ALB + listeners + target groups</span></span></code></pre></div><p>每批的操作流程固定：</p>
<ol>
<li>寫 import block → <code>imports-batch-N.tf</code></li>
<li><code>terraform plan -generate-config-out=generated-batch-N.tf</code> → 檢查 plan 輸出全部是 <code>import</code>、沒有 <code>create</code>/<code>destroy</code></li>
<li>review generated code → 修正 lifecycle、刪除平台預設屬性、處理 provider quirk</li>
<li><code>terraform plan</code> → 確認零非預期變更（import 完後的 plan 應該只有 import 標記、沒有 change）</li>
<li><code>terraform apply</code> → 執行 import</li>
<li><code>terraform plan</code> → 再跑一次確認零 drift（import 後的 state 與雲端一致）</li>
<li>刪除 <code>imports-batch-N.tf</code>（import block 已完成使命）、把 <code>generated-batch-N.tf</code> rename 成正式檔名</li>
</ol>
<p>批次之間要按依賴順序：先 import 被依賴的資源（VPC → subnet → SG），再 import 依賴它們的資源（RDS → EC2）。這樣後面批次的 generated code 可以引用前面批次已經在 state 裡的資源，而非 hardcode ID。</p>
<h2 id="驗證plan-必須是零非預期變更">驗證：plan 必須是零非預期變更</h2>
<p>import 完成的判準是 <code>terraform plan</code> 輸出只有兩種結果之一：</p>
<ul>
<li><strong>完全零變更</strong>（&ldquo;No changes&rdquo;）— 最理想，代表 HCL 和雲端現實完全匹配</li>
<li><strong>只有已知且可接受的差異</strong> — 某些屬性在 HCL 裡省略了（用平台預設）、或 provider 的 plan 行為跟雲端有已知的格式差異（如 JSON 排序不同）</li>
</ul>
<p>出現 <code>change</code>（要修改屬性）代表 HCL 跟雲端有落差，apply 會把雲端改成 HCL 的版本。在確認這個修改是安全的之前，不要 apply。</p>
<p>出現 <code>replace</code>（先刪後建）代表某個屬性的修改會觸發資源重建。對 stateful 資源這等於資料遺失，必須在 apply 之前解決——通常是 HCL 裡漏寫了某個 force-new 屬性。</p>
<h2 id="常見-import-失敗與處理">常見 import 失敗與處理</h2>
<table>
  <thead>
      <tr>
          <th>錯誤訊息</th>
          <th>原因</th>
          <th>處理方式</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>Resource already managed by Terraform</code></td>
          <td>資源已經在 state 裡</td>
          <td>用 <code>terraform state list</code> 確認、移除重複的 import block</td>
      </tr>
      <tr>
          <td><code>Cannot import non-existent remote object</code></td>
          <td>資源 ID 錯誤或資源已刪除</td>
          <td>確認 ID 格式正確、在 Console 確認資源存在</td>
      </tr>
      <tr>
          <td><code>Error: Unsupported resource type</code></td>
          <td>provider 版本太舊不支援該資源類型</td>
          <td>升級 provider version</td>
      </tr>
      <tr>
          <td><code>AccessDenied</code> / <code>is not authorized to perform</code></td>
          <td>執行 import 的身分權限不足</td>
          <td>import 需要對目標資源的 <code>Describe*</code> 和 <code>Get*</code> 權限</td>
      </tr>
      <tr>
          <td>Plan 顯示意外的 <code>destroy</code></td>
          <td>import block 的 <code>to</code> 地址跟已存在的資源定義衝突</td>
          <td>確認 <code>to</code> 指向的 resource block 不已經管理另一個資源</td>
      </tr>
  </tbody>
</table>
<p>import 操作本身不改變雲端資源——它只修改 state 檔。失敗時的回退方式是 <code>terraform state rm &lt;resource_address&gt;</code>，把 state 裡的對應記錄移除，資源本身不受影響。</p>
<h2 id="時程參考">時程參考</h2>
<table>
  <thead>
      <tr>
          <th>批次規模</th>
          <th>估計時間（含 review）</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>5-10 個同類資源</td>
          <td>2-4 小時（含 generated code review）</td>
      </tr>
      <tr>
          <td>10-20 個混合資源</td>
          <td>1-2 天</td>
      </tr>
      <tr>
          <td>50+ 個資源的完整環境</td>
          <td>1-2 週（分 5-8 個批次、每批含驗證）</td>
      </tr>
  </tbody>
</table>
<p>主要時間花在 generated HCL 的 review——生成是秒級的，確認每個屬性正確與否是人工判斷。第一批（security group）通常最慢，因為要建立 review 的肌肉記憶；後面的批次會加速。</p>
<h2 id="跨分類引用">跨分類引用</h2>
<ul>
<li>→ <a href="/blog/infra/takeover/partial-iac-no-docs/" data-link-title="有半套 IaC 但文件缺失的環境接管" data-link-desc="IaC 覆蓋不完整、部分資源在 state 外、文件缺失的環境怎麼盤點差距、修復 state 健康、收斂 drift 並重建文件">有半套 IaC 但文件缺失的環境接管</a>：import 前的盤點與 state 健康檢查</li>
<li>→ <a href="/blog/infra/takeover/partial-iac-dual-truth-operation/" data-link-title="兩套真相並存的過渡期操作" data-link-desc="部分資源在 IaC、部分在手動時，怎麼安全操作避免比全手動更危險，以及怎麼縮短這個過渡期">兩套真相並存的過渡期操作</a>：import 期間就是 dual-truth 狀態，操作規則見此篇</li>
<li>→ <a href="/blog/infra/01-minimal-iac/" data-link-title="模組一：最小可行 IaC — state 地基與 Console 唯讀鐵律" data-link-desc="Terraform / OpenTofu 選型、remote state 與 lock，以及「Console 只能看不能改」鐵律">模組一：IaC 工具選型與 state 地基</a>：state backend 的設定與保護</li>
<li>→ <a href="/blog/infra/05-core-services/stateful-protection-dependency/" data-link-title="Stateful 資源保護與跨服務依賴表達" data-link-desc="stateful 資源的保護策略（multi-AZ、備份、刪除保護）、stateful 與 stateless 的操作差異，以及用 output 與 data source 表達服務間依賴">模組五：Stateful 資源保護</a>：import stateful 資源後的 lifecycle 設定</li>
</ul>
]]></content:encoded></item></channel></rss>