本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Athena for Spark 中設定跨帳戶 AWS Glue 存取
本主題將說明如何將消費者帳戶 666666666666
和擁有者帳戶 999999999999
設定為跨帳户 AWS Glue
存取權。設定帳戶時,消費者帳戶可以在擁有者的 AWS Glue 資料庫和資料表上執行 Athena for Spark 的查詢。
步驟 1:在 中 AWS Glue,提供取用者角色的存取權
在 中 AWS Glue,擁有者會建立政策,讓消費者的角色存取擁有者 AWS Glue 的資料目錄。
新增允許取用者角色存取擁有者資料目錄 AWS Glue 的政策
-
使用目錄擁有者的帳戶,登入 AWS Management Console。
在 https://https://console.aws.amazon.com/glue/
開啟 AWS Glue 主控台。 -
在導覽窗格中,展開資料目錄,然後選擇目錄設定。
-
在資料目錄設定頁面的許可區段中,新增如下政策。此政策為消費者帳戶
666666666666
提供存取所有者帳戶999999999999
中的資料目錄的角色。
步驟 2:設定取用者帳戶以進行存取
在取用者帳戶中,建立政策以允許存取擁有者 AWS Glue Data Catalog的、資料庫和資料表,並將政策連接至角色。下列範例會使用消費者帳戶 666666666666
。
建立 AWS Glue 政策以存取擁有者的 AWS Glue Data Catalog
-
使用消費者帳戶,登入 AWS Management Console。
前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在導覽窗格中,展開存取管理,然後選擇政策。
-
選擇建立政策。
-
在指定許可頁面上,選擇 JSON。
-
在政策編輯器中,輸入如下所示的 JSON 陳述式,允許對擁有者帳戶的資料目錄執行 AWS Glue 動作。
-
選擇下一步。
-
在檢閱和建立頁面上,針對政策名稱,輸入該政策的名稱。
-
選擇建立政策。
接下來,您可以在消費者帳戶中使用 IAM 主控台,將剛建立的政策連接到消費者帳戶用來存取擁有者資料目錄的 IAM 角色或角色。
將 AWS Glue 政策連接至取用者帳戶中的角色
-
在消費者帳戶 IAM 主控台導覽窗格中,選擇角色。
-
在角色頁面上,尋找您要連接政策的角色。
-
選擇新增許可,然後選擇連接政策。
-
尋找您剛建立的政策。
-
選取政策的核取方塊,然後選擇新增許可。
-
重複這些步驟,將政策新增至您要使用的其他角色。
步驟 3:設定工作階段並建立查詢
在 Athena Spark 的請求者帳戶中,使用指定的角色,藉由建立筆記本或編輯目前工作階段來建立工作階段,以測試存取。設定工作階段屬性時,請指定下列其中一個:
-
AWS Glue 目錄分隔符號 – 使用此方法,您可以在查詢中包含擁有者帳戶 ID。如果您要使用工作階段來查詢不同擁有者的資料目錄,請使用此方法。
-
AWS Glue 目錄 ID – 使用此方法,您可以直接查詢資料庫。如果您要使用工作階段來僅查詢單一擁有者的資料目錄,則此方法比較方便。
當您編輯工作階段屬性時,請新增下列項目:
{ "spark.hadoop.aws.glue.catalog.separator": "/" }
當您在儲存格中執行查詢時,請使用類似下列範例中的語法。請注意,在 FROM
子句中,資料庫名稱前需要目錄 ID 和分隔符號。
df = spark.sql('SELECT requestip, uri, method, status FROM `
999999999999
/mydatabase`.cloudfront_logs LIMIT 5') df.show()
當您編輯工作階段屬性時,請輸入下列屬性。將 999999999999
取代為擁有者帳戶 ID。
{ "spark.hadoop.hive.metastore.glue.catalogid": "
999999999999
" }
當您在儲存格中執行查詢時,請使用如下語法。請注意,在 FROM
子句中,資料庫名稱前不需要目錄 ID 和分隔符號。
df = spark.sql('SELECT * FROM mydatabase.cloudfront_logs LIMIT 10') df.show()
其他資源
《 AWS Lake Formation 開發人員指南》中的使用 AWS Glue 和 Lake Formation 管理跨帳戶許可。
在AWS 規範性指引模式中AWS Glue Data Catalog ,使用 Amazon Athena 設定共用 的跨帳戶存取權。