本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為使用者設定 SageMaker AI 網域或使用者設定檔以存取 SageMaker Canvas 時,您可以指定 Canvas 成品的 Amazon S3 儲存位置。這些成品包括已儲存的輸入資料集副本、模型加工品、預測和其他應用程式資料。您可以使用預設的 SageMaker AI 建立的 Amazon S3 儲存貯體,也可以自訂儲存位置並指定自己的儲存貯體來存放 Canvas 應用程式資料。
您可以在另一個 AWS 帳戶中指定 Amazon S3 儲存貯體來存放 Canvas 資料,但首先必須授予跨帳戶許可,讓 Canvas 可以存取儲存貯體。
以下各節說明如何授予 Canvas 的許可,以便在另一個帳戶中的 Amazon S3 儲存貯體上傳和下載物件。當您的儲存貯體使用 加密時,還有其他許可 AWS KMS。
要求
開始之前,檢查下列要求:
跨帳戶 Amazon S3 儲存貯體 (和任何相關聯的 AWS KMS 金鑰) 必須與 Canvas 使用者網域或使用者設定檔位於相同的 AWS 區域。
您 Canvas 儲存位置中訓練資料夾的最終 Amazon S3 URI 必須在 128 個字元以內。最終的 Amazon S3 URI 包含您的儲存貯體路徑
s3://<your-bucket-name>/<folder-name>/
以及 Canvas 新增至您的儲存貯體的路徑:Canvas/<user-profile-name>/Training
。例如,小於 128 個字元的可接受路徑為s3://<amzn-s3-demo-bucket>/<machine-learning>/Canvas/<user-1>/Training
。
儲存貯體的跨帳戶 Amazon S3 主控台 ACL 許可
以下部分概述授予必要許可,以便 Canvas 可以在另一個帳戶中存取 Amazon S3 儲存貯體的基本步驟。如詳細說明,請參閱 Amazon S3 使用者指南中的範例 2:儲存貯體擁有者授予跨帳戶許可。
-
在帳戶 A 建立一個 Amazon S3 儲存貯體
bucketA
。 -
Canvas 使用者存在於另一個名為帳戶 B 的帳戶中。在下列步驟中,我們將 Canvas 使用者的 IAM 角色在帳戶 B 中稱為
roleB
。透過連接 IAM 政策,讓帳戶 B 中的 IAM 角色
roleB
獲得許可從帳戶 A 的bucketA
中下載 (GetObject
) 和上傳 (PutObject
) 物件。若要限制存取特定儲存貯體資料夾,請在資源元素中定義資料夾名稱,例如
arn:aws:s3:::<bucketA>/FolderName/*
。如需更多資訊,請參閱如何使用 IAM 政策授予使用者特定資料夾的存取許可? 注意
儲存貯體層級動作如
GetBucketCors
和GetBucketLocation
應該新增至值區層級資源,而不是資料夾。下列 IAM 政策範例授予
roleB
存取bucketA
中物件的必要許可:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::bucketA/FolderName/*", ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketCors", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::bucketA", ] } ] }
-
設定帳戶 A 中
bucketA
的儲存貯體政策,對帳戶 B 中的 IAM 角色roleB
授予許可。注意
管理員也必須在儲存貯體許可區段下關閉封鎖所有公開存取。
下列儲存貯體政策範例,讓
bucketA
授予roleB
必要的許可:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountB:role/roleB" }, "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::bucketA/FolderName/*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountB:role/roleB" }, "Action": [ "s3:ListBucket", "s3:GetBucketCors", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucketA" } ] }
設定前述許可後,帳戶 B 中的 Canvas 使用者設定檔現在可以使用帳戶 A 中的 Amazon S3 儲存貯體做為 Canvas 成品的儲存位置。
使用 加密的跨帳戶 Amazon S3 儲存貯體的許可 AWS KMS
下列程序說明如何授予必要的許可,讓 Canvas 可以存取使用 加密的另一個帳戶中的 Amazon S3 儲存貯體 AWS KMS。這些步驟與上述程序類似,但具有其他許可。如需授予跨帳戶 KMS 金鑰許可的更多相關資訊,請參閱 AWS KMS 開發人員指南中的允許其他帳戶中的使用者使用 KMS 金鑰。
-
在帳戶 A
s3KmsInAccountA
中建立 Amazon S3 儲存貯體bucketA
、 和 Amazon S3 KMS 金鑰。 -
Canvas 使用者存在於另一個名為帳戶 B 的帳戶中。在下列步驟中,我們將 Canvas 使用者的 IAM 角色在帳戶 B 中稱為
roleB
。授予帳戶 B 中的 IAM 角色
roleB
執行下列動作的許可:在帳戶 A 的
bucketA
中下載 (GetObject
) 和上傳 (PutObject
) 物件。存取帳戶 A
s3KmsInAccountA
中的 AWS KMS 金鑰。
下列 IAM 政策範例授予
roleB
存取bucketA
中物件和使用 KMS 金鑰s3KmsInAccountA
的必要許可:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::bucketA/FolderName/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketCors", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::bucketA" ] }, { "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:RetireGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlainText", "kms:Decrypt" ], "Effect": "Allow", "Resource": "arn:aws:kms:{region}:accountA:key/s3KmsInAccountA" } ] }
-
在帳戶 A 中設定
bucketA
的儲存貯體政策和s3KmsInAccountA
的金鑰政策,將許可授予帳戶 B 的 IAM 角色roleB
。下列範例儲存貯體政策為
bucketA
授予roleB
必要的許可:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountB:role/roleB" }, "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::bucketA/FolderName/*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountB:role/roleB" }, "Action": [ "s3:GetBucketCors", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucketA" } ] }
下列範例是您連接至帳戶 A 中 KMS 金鑰
s3KmsInAccountA
以授予roleB
存取權的金鑰政策。如需有關如何建立和連接金鑰政策聲明的更多相關資訊,請參閱 AWS KMS 開發人員指南中的建立金鑰政策。{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::accountB:role/roleB" ] }, "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:RetireGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlainText", "kms:Decrypt" ], "Resource": "*" }
設定上述許可後,帳戶 B 中的 Canvas 使用者設定檔現在可以使用帳戶 A 中的加密 Amazon S3 儲存貯體做為 Canvas 成品的儲存位置。