本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon EFS 整合
Amazon Elastic File System (Amazon EFS) 提供無伺服器、完全彈性的檔案儲存功能,讓您無需佈建或管理儲存容量和效能,即可分享檔案資料。使用 Amazon EFS,您可以建立檔案系統,然後透過 NFS 4.0 和 4.1 版 (NFSv4) 通訊協定將其掛載到虛擬私人雲端中。然後,您可以像使用任何其他 POSIX 相容檔案系統一樣使用 EFS 檔案系統。如需一般資訊,請參閱什麼是 Amazon 彈性檔案系統?和 AWS 部落格文章整合 Amazon RDS for Oracle 與 Amazon EFS
主題
Amazon EFS 整合概觀
透過 Amazon EFS,您可以在 RDS for Oracle 資料庫執行個體與 Amazon EFS 檔案系統之間傳輸檔案。例如,您可以使用 EFS 支援下列使用案例:
-
在應用程式和多個資料庫伺服器之間共用檔案系統。
-
建立共用目錄,用於與移轉任務相關的檔案 (包括可傳輸的資料表空間資料檔案)。如需詳細資訊,請參閱 使用 Oracle 可傳輸資料表空間進行移轉。
-
儲存和共用已封存的重做日誌檔,無需在伺服器上額外配置儲存空間。
-
使用 Oracle 資料庫公用程式 (例如
UTL_FILE
) 來讀取和寫入檔案。
Amazon EFS 整合的優勢
選擇 EFS 檔案系統而非其他資料傳輸解決方案的效益如下:
-
您可以在 RDS for Oracle 資料庫執行個體與 Amazon EFS 檔案系統之間傳輸檔案。您不需要在本機複製這些檔案,因為 Data Pump 會直接從 EFS 檔案系統匯入。如需詳細資訊,請參閱 將資料匯入 Amazon RDS 上的 Oracle。
-
相較於使用資料庫連結,資料移轉速度更快。
-
您可以避免在 RDS for Oracle 資料庫執行個體上配置儲存空間來儲存檔案。
-
EFS 檔案系統可以自動擴充儲存空間,您無需動手佈建。
-
Amazon EFS 整合沒有最低費用或設定成本。您僅需按實際用量付費。
-
Amazon EFS 整合支援兩種加密形式:加密傳輸中的資料和靜態加密。依預設,使用 TLS 1.2 版啟用傳輸中資料的加密功能。您可在 Amazon EFS 檔案系統建立時啟用靜態資料加密。如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的靜態資料加密。
Amazon EFS 整合的需求
請確定您符合下列需求:
-
您的資料庫執行的資料庫版本為 19.0.0.0.ru-2022-07.rur-2022-07.r1 或更新版本。
-
您的資料庫執行個體和 EFS 檔案系統位於相同 AWS 區域、VPC 和 AWS 帳戶。適用於 Oracle 的 RDS 不支援 EFS 的跨帳戶和跨區域存取。
-
您的 VPC 已啟用
enableDnsSupport
屬性。如需詳細資訊,請參閱《Amazon Virtual Private Cloud 使用者指南》中的 VPC 中的 DNS 屬性。 -
您的 EFS 檔案系統使用標準或標準 IA 儲存體類別。
-
若要在
mount
命令中使用 DNS 名稱,必須符合下列條件:-
連線資料庫執行個體位於 VPC 內,且設定為使用 Amazon 提供的 DNS 伺服器。不支援自訂 DNS 伺服器。
-
連線執行個體的 VPC 必須同時已啟用 DNS 解析和 DNS 主機名稱。
-
連線執行個體必須與 EFS 檔案系統位在相同的 VPC 內。
-
-
您可以使用非 RDS 解決方案來備份 EFS 檔案系統。RDS for Oracle 不支援 EFS 檔案系統的自動備份或手動資料庫快照。如需詳細資訊,請參閱備份您的 Amazon EFS 檔案系統。
設定網路許可以進行 RDS for Oracle 與 Amazon EFS 的整合
若要讓 RDS for Oracle 與 Amazon EFS 整合,請確定您的資料庫執行個體具有 EFS 檔案系統的網路存取權。如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的控制 NFS 用戶端對 Amazon EFS 檔案系統的網路存取。
使用安全群組控制網路存取
您可以使用網路層安全機制 (例如 VPC 安全群組) 控制資料庫執行個體對 EFS 檔案系統的存取。若要允許資料庫執行個體存取 EFS 檔案系統,請確定您的 EFS 檔案系統符合下列需求:
-
EFS 掛載目標存在於 RDS for Oracle 資料庫執行個體使用的每個可用區域中。
EFS 掛載目標會提供 NFSv4 端點的 IP 地址,您可以在該端點上掛載 EFS 檔案系統。您將使用其 DNS 名稱掛載您的檔案系統,該名稱會解析為 EFS 掛載目標 IP 地址,而該目標位於資料庫執行個體所使用的可用區域中。
您可以設定不同可用區域中的資料庫執行個體,以使用相同的 EFS 檔案系統。針對多可用區,您需要部署中每個可用區域的掛載點。您可能需要將資料庫執行個體移動至不同的可用區域。基於這些原因,建議您在 VPC 中的每個可用區域建立 EFS 掛載點。根據預設,當您使用主控台建立新的 EFS 檔案系統時,RDS 會為所有可用區域建立掛載目標。
-
安全群組連接至掛載目標。
-
安全群組具有傳入規則,允許在 TCP/2049 (NFS 類型) 上 RDS for Oracle 資料庫執行個體的網路子網路或安全群組。
如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的建立 Amazon EFS 檔案系統和建立和管理 EFS 掛載目標和安全群組。
使用檔案系統政策控制網路存取
Amazon EFS 與 RDS for Oracle 整合會使用預設 (空白) EFS 檔案系統政策。預設政策不會使用 IAM 進行身分驗證。相反地,它會將完全存取權授予任何可以使用掛載目標連線至檔案系統的匿名用戶端。每當使用者設定的檔案系統政策未生效時,預設政策就會生效,包括在建立檔案系統時。如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的預設 EFS 檔案系統政策。
若要加強所有用戶端 (包括 RDS for Oracle) 對 EFS 檔案系統的存取,您可以設定 IAM 許可。在此方法中,您可以建立檔案系統政策。如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的建立檔案系統政策。
設定 IAM 許可以進行 RDS for Oracle 與 Amazon EFS 的整合
根據預設,Amazon EFS 整合功能不使用 IAM 角色:選USE_IAM_ROLE
項設定為FALSE
。若要將 RDS 版 Oracle 與 Amazon EFS 和 IAM 角色整合,您的資料庫執行個體必須具有 IAM 許可才能存取 Amazon EFS 檔案系統。
主題
步驟 1:針對您的資料庫執行個體建立 IAM 角色並附加您的政策
在此步驟中,您會針對 RDS for Oracle 資料庫執行個體建立一個角色,允許 Amazon RDS 存取您的 EFS 檔案系統。
建立 IAM 角色以允許 Amazon RDS 存取 EFS 檔案系統
-
開啟 IAM 管理主控台
。 -
在導覽窗格中,選擇 Roles (角色)。
-
選擇 Create Role (建立角色)。
-
針對 AWS 服務,請選擇 RDS。
-
針對 Select your use case (選擇使用案例) 選擇 RDS – Add Role to Database (新增角色至資料庫)。
-
選擇下一步。
-
請不要新增任何許可政策。選擇下一步。
-
將 Role Name (角色名稱) 設為您的 IAM 角色名稱,例如
rds-efs-integration-role
。您也可以新增選用的 Description (描述) 值。 -
選擇建立角色。
若要將服務的許可限制為特定資源,建議您在資源型信任關係中使用 aws:SourceArn
和 aws:SourceAccount
全域條件內容金鑰。這是防止混淆代理人問題最有效的方式。
您可以同時使用全域條件內容索引鍵和包含帳號 ID 的 aws:SourceArn
值。在此情況下,當在相同陳述式中使用 aws:SourceAccount
值和 aws:SourceArn
裡的帳户時,兩者必須使用同樣的帳户 ID。
-
如果您想要跨服務存取單一資源,請使用
aws:SourceArn
。 -
如果您想要允許該帳戶中的任何資源與跨服務使用相關聯,請使用
aws:SourceAccount
。
在信任關係中,請務必使用 aws:SourceArn
全域條件內容索引鍵,其中包含存取角色的資源之完整 Amazon 資源名稱 (ARN)。
下列 AWS CLI 命令會建立
為此目的命名的角色。rds-efs-integration-role
範例
對於LinuxmacOS、或Unix:
aws iam create-role \ --role-name
rds-efs-integration-role
\ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount":my_account_ID
, "aws:SourceArn": "arn:aws:rds:Region
:my_account_ID
:db:dbname
" } } } ] }'
在 Windows 中:
aws iam create-role ^ --role-name
rds-efs-integration-role
^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount":my_account_ID
, "aws:SourceArn": "arn:aws:rds:Region
:my_account_ID
:db:dbname
" } } } ] }'
如需詳細資訊,請參閱《IAM 使用者指南》中的建立角色以將許可委派給 IAM 使用者。
步驟 2:針對您的 Amazon EFS 檔案系統建立檔案系統政策
在此步驟中,您會針對 EFS 檔案系統建立檔案系統政策。
建立或編輯 EFS 檔案系統政策
-
開啟 EFS 管理主控台
。 -
選擇 File Systems (檔案系統)。
-
在 File systems (檔案系統) 頁面上,選擇您要編輯或針對其建立檔案系統政策的檔案系統。即會顯示該檔案系統的詳細資訊頁面。
-
選擇 File system policy (檔案系統政策) 索引標籤。
如果政策空白,表示正在使用預設 EFS 檔案系統政策。如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的預設 EFS 檔案系統政策。
-
選擇編輯。File system policy (檔案系統政策) 頁面隨即顯示。
-
在 Policy editor (原則編輯器) 中,輸入如下的政策,然後選擇 Save (儲存)。
{ "Version": "2012-10-17", "Id": "ExamplePolicy01", "Statement": [ { "Sid": "ExampleStatement01", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:role/rds-efs-integration-role" }, "Action": [ "elasticfilesystem:ClientMount", "elasticfilesystem:ClientWrite", "elasticfilesystem:ClientRootAccess" ], "Resource": "arn:aws:elasticfilesystem:us-east-1
:123456789012
:file-system/fs-1234567890abcdef0
" } ] }
步驟 3:將 IAM 角色與 RDS for Oracle 資料庫執行個體建立關聯
在此步驟中,您會將 IAM 角色與資料庫執行個體建立關聯。請注意下列需求:
-
您必須有權存取必要 Amazon EFS 許可政策附加至其中的 IAM 角色。
-
您一次只能將一個 IAM 角色與 RDS for Oracle 資料庫執行個體建立關聯。
-
執行個體的狀態必須為 Available (可用)。
如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的適用於 Amazon EFS 的 Identity and Access Management。
如要建立 IAM 角色與 RDS for Oracle 資料庫執行個體的關聯
登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/
。 -
選擇 Databases (資料庫)。
-
如果您的資料庫執行個體無法使用,請選擇 Actions (動作),然後選擇 Start (開始)。當執行個體狀態顯示 Started (已啟動) 時,請移至下一個步驟。
-
選擇 Oracle 資料庫執行個體名稱以顯示其詳細資訊。
-
在 Connectivity & security (連線和安全) 索引標籤上,向下捲動至頁面底部的 Manage IAM roles (管理 IAM 角色) 區段。
-
在 Add IAM roles to this instance (新增 IAM 角色到此執行個體) 區段中選擇要新增的角色。
-
針對 Feature (功能),選擇 EFS_INTEGRATION。
-
選擇 Add role (新增角色)。
下列 AWS CLI 命令會將角色新增至名為的 Oracle 資料庫執行個體
。mydbinstance
範例
對於LinuxmacOS、或Unix:
aws rds add-role-to-db-instance \ --db-instance-identifier
mydbinstance
\ --feature-name EFS_INTEGRATION \ --role-arnyour-role-arn
在 Windows 中:
aws rds add-role-to-db-instance ^ --db-instance-identifier
mydbinstance
^ --feature-name EFS_INTEGRATION ^ --role-arnyour-role-arn
將
替換為您前個步驟記下的角色 ARN。your-role-arn
EFS_INTEGRATION
必須在 --feature-name
選項中指定。
新增 EFS_INTEGRATION 選項
若要整合 Amazon RDS for Oracle 與 Amazon EFS,您的資料庫執行個體必須與包含 EFS_INTEGRATION
選項的選項群組建立關聯。
屬於相同選項群組的多個 Oracle 資料庫執行個體共用相同的 EFS 檔案系統。不同的資料庫執行個體可以存取相同的資料,但存取可以透過使用不同的 Oracle 目錄來進行劃分。如需更多資訊,請參閱在 RDS for Oracle 與 Amazon EFS 檔案系統之間傳輸檔案。
設定選項群組進行 Amazon EFS 整合
-
建立新的選項群組,或識別現有的選項群組,以便在其中新增
EFS_INTEGRATION
選項。如需建立選項群組的相關資訊,請參閱建立選項群組。
-
將
EFS_INTEGRATION
選項新增至選項群組。您需要指定EFS_ID
檔案系統 ID 並設定USE_IAM_ROLE
旗標。如需詳細資訊,請參閱 將選項新增至選項群組。
-
請採取下其中一種方式將選項群組與您的資料庫執行個體建立關聯:
-
建立新的 Oracle 資料庫執行個體,並將選項群組與其建立關聯。如需建立資料庫執行個體的相關資訊,請參閱 建立 Amazon RDS 資料庫執行個體。
-
修改 Oracle 資料庫執行個體,以將選項群組與其建立關聯。如需修改 Oracle 資料庫執行個體的相關資訊,請參閱修改 Amazon RDS 資料庫執行個體。
-
設定選項群組進行 EFS 整合
-
建立新的選項群組,或識別現有的選項群組,以便在其中新增
EFS_INTEGRATION
選項。如需建立選項群組的相關資訊,請參閱建立選項群組。
-
將
EFS_INTEGRATION
選項新增至選項群組。例如,下列 AWS CLI 指令會將
EFS_INTEGRATION
選項新增至名為的選項群組myoptiongroup
。範例
對於LinuxmacOS、或Unix:
aws rds add-option-to-option-group \ --option-group-name
myoptiongroup
\ --options "OptionName=EFS_INTEGRATION,OptionSettings=\ [{Name=EFS_ID,Value=fs-1234567890abcdef0},{Name=USE_IAM_ROLE,Value=TRUE}]"在 Windows 中:
aws rds add-option-to-option-group ^ --option-group-name
myoptiongroup
^ --options "OptionName=EFS_INTEGRATION,OptionSettings=^ [{Name=EFS_ID,Value=fs-1234567890abcdef0},{Name=USE_IAM_ROLE,Value=TRUE}]" -
請採取下其中一種方式將選項群組與您的資料庫執行個體建立關聯:
-
建立新的 Oracle 資料庫執行個體,並將選項群組與其建立關聯。如需建立資料庫執行個體的相關資訊,請參閱 建立 Amazon RDS 資料庫執行個體。
-
修改 Oracle 資料庫執行個體,以將選項群組與其建立關聯。如需修改 Oracle 資料庫執行個體的相關資訊,請參閱修改 Amazon RDS 資料庫執行個體。
-
設定 Amazon EFS 檔案系統許可
根據預設,只有根使用者 (UID 0
) 對新建立的 EFS 檔案系統具備讀取、寫入和執行許可。若要讓其他使用者能夠修改檔案系統,根使用者必須明確地授予存取權給這些使用者。RDS for Oracle 資料庫執行個體的使用者位於 others
類別中。如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的使用網路檔案系統 (NFS) 層級的使用者、群組和許可。
若要允許 RDS for Oracle 資料庫執行個體讀取和寫入 EFS 檔案系統上的檔案,請執行下動作:
-
在本機於 Amazon EC2 或內部部署執行個體上掛載 EFS 檔案系統。
-
設定精細許可。
例如,若要授予 other
使用者寫入 EFS 檔案系統根目錄的許可,請在此目錄上執行 chmod 777
。如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的範例 Amazon EFS 檔案系統使用案例和許可。
在 RDS for Oracle 與 Amazon EFS 檔案系統之間傳輸檔案
若要在 RDS for Oracle 執行個體與 Amazon EFS 檔案系統之間傳輸檔案,請至少建立一個 Oracle 目錄,然後設定 EFS 檔案系統許可,以控制資料庫執行個體存取。
建立 Oracle 目錄
若要建立 Oracle 目錄,請使用程序 rdsadmin.rdsadmin_util.create_directory_efs
。 程序具有下列參數。
參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
---|---|---|---|---|
|
VARCHAR2 |
– |
是 |
Oracle 目錄的名稱。 |
|
VARCHAR2 |
– |
是 |
EFS 檔案系統上的路徑。路徑名稱的字首會使用模式 例如,如果您的 EFS 檔案系統已命名為
|
假設您在 EFS 檔案系統 fs-1234567890abcdef0
上建立了名為 /datapump1
的子目錄。下列範例會建立一個 Oracle 目錄 DATA_PUMP_DIR_EFS
,指向 EFS 檔案系統上的 /datapump1
目錄。p_path_on_efs
參數的檔案系統路徑值以字串 /rdsefs-
為字首。
BEGIN rdsadmin.rdsadmin_util.create_directory_efs( p_directory_name => 'DATA_PUMP_DIR_EFS', p_path_on_efs => '/rdsefs-
fs-1234567890abcdef0
/datapump1
'); END; /
在 EFS 檔案系統之間傳輸資料:範例
下列範例使用 Oracle Data Pump 將名為 MY_TABLE
的資料表匯出至檔案 datapump.dmp
。此檔案位於 EFS 檔案系統上。
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'EXPORT', job_mode => 'TABLE', job_name=>null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'datapump.dmp', directory => 'DATA_PUMP_DIR_EFS', filetype => dbms_datapump.ku$_file_type_dump_file); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'datapump-exp.log', directory => 'DATA_PUMP_DIR_EFS', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'NAME_EXPR','IN (''MY_TABLE'')'); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
下列範例使用 Oracle Data Pump,從檔案 datapump.dmp
中匯入名為 MY_TABLE
的資料表。此檔案位於 EFS 檔案系統上。
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'TABLE', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'datapump.dmp', directory => 'DATA_PUMP_DIR_EFS', filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'datapump-imp.log', directory => 'DATA_PUMP_DIR_EFS', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'NAME_EXPR','IN (''MY_TABLE'')'); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
如需詳細資訊,請參閱 將資料匯入 Amazon RDS 上的 Oracle。
移除 EFS_INTEGRATION 選項
移除EFS_INTEGRATION
選項的步驟取決於您要從多個資料庫執行個體或單一執行個體移除選項。
資料庫執行個體的數目 | 動作 | 相關資訊 |
---|---|---|
多個 | 從資料庫執行個體所屬的選項群組中移除選項。EFS_INTEGRATION 此變更會影響使用選項群組的所有執行個體。 |
從選項群組移除選項 |
單一 | 修改資料庫執行個體,並指定不包括 EFS_INTEGRATION 選項的不同選項群組。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。 |
修改 Amazon RDS 資料庫執行個體 |
移除此EFS_INTEGRATION
選項後,您可以選擇性地刪除連線到資料庫執行個體的 EFS 檔案系統。
針對 Amazon EFS 整合進行疑難排解
您的 RDS for Oracle 資料庫執行個體會監控與 EFS 檔案系統的連線。當監控偵測到問題時,它可能會嘗試修正該問題,並在 RDS 主控台中發佈事件。如需詳細資訊,請參閱檢視 Amazon RDS 事件。
請使用此節中的資訊,協助您診斷並修正在您使用 Amazon EFS 整合時常見的問題。
通知 | 描述 | 動作 |
---|---|---|
|
資料庫執行個體無法與 EFS 檔案系統通訊。 |
請確定下列情況:
|
|
安裝 |
請確定下列情況:
|
|
安裝 |
請確定您已將 IAM 角色與 RDS for Oracle 資料庫執行個體建立關聯。 |
|
安裝 |
請確定您已將 IAM 角色與 RDS for Oracle 資料庫執行個體建立關聯。 |
|
安裝 |
因應措施是完成下列步驟:
|
|
當您使用的是不支援 Amazon EFS 的 RDS for Oracle 版本時,可能會發生此錯誤。 |
請確定您使用的是 RDS for Oracle 資料庫執行個體版本 19.0.0.0.ru-2022-07.rur-2022-07.r1 或更新版本。 |
|
您的資料庫執行個體無法讀取 EFS 檔案系統。 |
請確定您的 EFS 檔案系統允許透過 IAM 角色或在 EFS 檔案系統層級進行讀取存取。 |
N/A |
您的資料庫執行個體無法寫入至 EFS 檔案系統。 |
採取下列步驟:
|
|
您正在使用自訂 DNS 伺服器。 |
若要在
|