本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
RDS 將 for SQL Server 與 S3 整合的先決條件
開始之前,請尋找或建立您要使用的 S3 儲存貯體。此外,新增許可,讓資料庫執行個體可以存取 S3 RDS 儲存貯體。若要設定此存取權,您可以建立IAM政策和IAM角色。
建立存取 Amazon S3 IAM的政策
-
在IAM管理主控台
中,選擇導覽窗格中的政策。 -
建立新政策,並使用 Visual editor (視覺化編輯器) 索引標籤執行下列步驟。
-
針對 Service (服務),輸入
S3
,然後選擇 S3 服務。 -
針對 Actions (動作),選擇下列選項,以授予資料庫執行個體所需的存取:
-
ListAllMyBuckets
– 必要 -
ListBucket
– 必要 -
GetBucketACL
– 必要 -
GetBucketLocation
– 必要 -
GetObject
– 將 S3 中的檔案下載至 時需要D:\S3\
-
PutObject
– 將D:\S3\
中的檔案上傳至 S3 時需要 -
ListMultipartUploadParts
– 將D:\S3\
中的檔案上傳至 S3 時需要 -
AbortMultipartUpload
– 將D:\S3\
中的檔案上傳至 S3 時需要
-
-
針對 Resources (資源),顯示的選項取決於您在上一步選擇的動作。您看到的選項可能是 bucket (儲存貯體)、object (物件) 或兩者都有。針對每個項目,新增適當的 Amazon Resource Name (ARN)。
針對儲存貯體 ,為您要使用的ARN儲存貯體新增 。例如,如果您的儲存貯體命名為
amzn-s3-demo-bucket
,將 ARN設定為arn:aws:s3:::
。amzn-s3-demo-bucket
針對物件 ,輸入儲存貯體ARN的 ,然後選擇下列其中一項:
-
若要允許存取指定儲存貯體中的所有檔案,對於 Bucket name (儲存貯體) 和 Object name (物件名稱),請都選擇 Any (任何)。
-
若要授予對儲存貯體中特定檔案或資料夾的存取權,ARNs請提供您要SQL伺服器存取的特定儲存貯體和物件。
-
-
遵循主控台的指示操作,直到完成建立政策。
以上為設定政策的簡略指南。如需建立IAM政策的更多詳細說明,請參閱 使用者指南中的建立IAM政策。 IAM
若要授予 Amazon 對 Amazon S3 儲存貯體的RDS存取權,請使用下列程序:
-
建立將 Amazon RDS存取權授予 S3 儲存貯體IAM的政策。
-
建立 Amazon RDS可以代表您擔任IAM的角色,以存取您的 S3 儲存貯體。
如需詳細資訊,請參閱 IAM 使用者指南 中的建立角色以將許可委派給IAM使用者。
-
將您建立IAM的政策連接至您建立IAM的角色。
建立 IAM 政策
包含適當動作,以授予資料庫執行個體所需的存取:
-
ListAllMyBuckets
– 必要 -
ListBucket
– 必要 -
GetBucketACL
– 必要 -
GetBucketLocation
– 必要 -
GetObject
– 將 S3 中的檔案下載至 時需要D:\S3\
-
PutObject
– 將D:\S3\
中的檔案上傳至 S3 時需要 -
ListMultipartUploadParts
– 將D:\S3\
中的檔案上傳至 S3 時需要 -
AbortMultipartUpload
– 將D:\S3\
中的檔案上傳至 S3 時需要
-
下列 AWS CLI 命令會建立
rds-s3-integration-policy
以這些選項命名IAM的政策。它授予名為 的儲存貯體存取權amzn-s3-demo-bucket
.用於 Linux, macOS、 或 Unix:
aws iam create-policy \ --policy-name
rds-s3-integration-policy
\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/key_prefix
/*" } ] }'用於 Windows:
務必將行尾改成您的界面所支援的字元 (
^
而不是\
)。另外,在 Windows 中,您必須以\
逸出所有雙引號。為了避免需要逸出 中的引號JSON,您可以將其儲存到 檔案,並將其傳遞為 參數。首先,建立包含下列許可政策的
policy.json
檔案:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/key_prefix
/*" } ] }然後,使用以下命令建立政策:
aws iam create-policy ^ --policy-name
rds-s3-integration-policy
^ --policy-document file://file_path
/assume_role_policy.json -
建立政策後,請注意政策的 Amazon Resource Name (ARN)。您需要 ARN才能進行後續步驟。
建立 IAM 角色
-
下列 AWS CLI 命令會為此目的建立
rds-s3-integration-role
IAM角色。用於 Linux, macOS、 或 Unix:
aws iam create-role \ --role-name
rds-s3-integration-role
\ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'用於 Windows:
務必將行尾改成您的界面所支援的字元 (
^
而不是\
)。另外,在 Windows 中,您必須以\
逸出所有雙引號。為了避免需要逸出 中的引號JSON,您可以將其儲存到 檔案,並將其傳遞為 參數。首先,建立包含下列政策的
assume_role_policy.json
檔案:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
然後使用下列命令來建立IAM角色:
aws iam create-role ^ --role-name
rds-s3-integration-role
^ --assume-role-policy-document file://file_path
/assume_role_policy.json範例 使用全域條件內容索引鍵來建立IAM角色
建議您在資源型政策中使用
aws:SourceArn
和aws:SourceAccount
全域條件內容索引鍵,將服務的許可限定於特定資源。這是防止混淆代理人問題最有效的方式。您可以同時使用全域條件內容索引鍵和包含帳號 ID 的
aws:SourceArn
值。在此情況下,當在相同政策陳述式中使用aws:SourceAccount
值和aws:SourceArn
裡的帳户時,兩者必須使用同樣的帳户 ID。-
如果您想要跨服務存取單一資源,請使用
aws:SourceArn
。 -
如果您想要允許該帳戶中的任何資源與跨服務使用相關聯,請使用
aws:SourceAccount
。
在政策中,請務必使用
aws:SourceArn
全域條件內容索引鍵搭配存取角色之資源的完整 Amazon Resource Name (ARN)。對於 S3 整合,請務必包含資料庫執行個體 ARNs,如下列範例所示。用於 Linux, macOS、 或 Unix:
aws iam create-role \ --role-name
rds-s3-integration-role
\ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn":"arn:aws:rds:Region
:my_account_ID
:db:db_instance_identifier
" } } } ] }'用於 Windows:
將全域條件內容索引鍵新增至
assume_role_policy.json
。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn":"arn:aws:rds:
Region
:my_account_ID
:db:db_instance_identifier
" } } } ] } -
將IAM政策連接至IAM角色
-
下列 AWS CLI 命令會將政策連接至名為 的角色
rds-s3-integration-role
。
以ARN您在上一個步驟中記下的政策取代 。your-policy-arn
用於 Linux, macOS、 或 Unix:
aws iam attach-role-policy \ --policy-arn
your-policy-arn
\ --role-namerds-s3-integration-role
用於 Windows:
aws iam attach-role-policy ^ --policy-arn
your-policy-arn
^ --role-namerds-s3-integration-role