将 RDS for SQL Server 与 S3 集成的先决条件
在开始之前,请找到或创建要使用的 S3 存储桶。另外,添加权限,以便 RDS 数据库实例可以访问 S3 存储桶。要配置此访问权限,请同时创建 IAM 策略和 IAM 角色。
创建用于访问 Amazon S3 的 IAM 策略
- 
                        在 IAM 管理控制台 中,选择导航窗格中的策略。 
- 
                        创建新策略,并使用 Visual editor (可视化编辑器) 选项卡执行以下步骤。 
- 
                        对于 Service (服务),输入 S3,然后选择 S3 服务。
- 
                        对于操作,选择以下各项以授予数据库实例所需的访问权限: - 
                                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)。 对于 bucket (存储桶),为要使用的存储桶添加 ARN。例如,如果存储桶名为 amzn-s3-demo-bucket,请将 ARN 设置为arn:aws:s3:::。amzn-s3-demo-bucket对于 object (对象),为存储桶输入 ARN,然后选择以下各项之一: - 
                                要授予对指定存储桶中所有文件的访问权限,请为 Bucket name (存储桶名称) 和 Object name (对象名称) 选择 Any (任何)。 
- 
                                要授予对存储桶中特定文件或文件夹的访问权限,请提供您希望 SQL Server 访问的特定存储桶和对象的 ARN。 
 
- 
                                
- 
                        按照控制台中的说明进行操作,直到您完成策略创建。 前面是设置策略的简要指南。有关创建 IAM 策略的更多详细说明,请参阅 IAM 用户指南中的 创建 IAM 策略。 
创建使用上一过程中的 IAM 策略的 IAM 角色
要授予 Amazon RDS 对 Amazon S3 存储桶的访问权限,请使用以下过程:
- 
                        创建向 Amazon RDS 授予对 S3 存储桶的访问权限的 IAM 策略。 
- 
                        创建一个让 Amazon RDS 可代表您访问 S3 存储桶的 IAM 角色。 有关更多信息,请参阅《IAM 用户指南》中的创建向 IAM 用户委派权限的角色。 
- 
                        将您创建的 IAM 策略附加到您创建的 IAM 角色。 
创建 IAM policy
包括适当的操作以授予数据库实例所需的访问权限:
- 
                            ListAllMyBuckets– 必需
- 
                            ListBucket– 必需
- 
                            GetBucketAcl– 必需
- 
                            GetBucketLocation– 必需
- 
                            GetObject– 将文件从 S3 下载到 所必需D:\S3\
- 
                            PutObject– 将文件从D:\S3\上传到 S3 所必需
- 
                            ListMultipartUploadParts– 将文件从D:\S3\上传到 S3 所必需
- 
                            AbortMultipartUpload– 将文件从D:\S3\上传到 S3 所必需
- 
                        以下 Amazon CLI 命令使用这些选项创建一个名为 rds-s3-integration-policy的 IAM 策略。该策略授予对名为amzn-s3-demo-bucket的存储桶的访问权限。对于 Linux、macOS 或 Unix: aws iam create-policy \ --policy-namerds-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文件:然后使用以下命令创建策略: aws iam create-policy ^ --policy-namerds-s3-integration-policy^ --policy-document file://file_path/assume_role_policy.json
- 
                        创建策略之后,请记下策略的 Amazon Resource Name (ARN)。后续步骤需要该 ARN。 
创建 IAM 角色
- 
                        以下 Amazon CLI 命令创建 rds-s3-integration-roleIAM 角色来实现此目的。对于 Linux、macOS 或 Unix: aws iam create-role \ --role-namerds-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文件:然后使用以下命令创建 IAM 角色: aws iam create-role ^ --role-namerds-s3-integration-role^ --assume-role-policy-document file://file_path/assume_role_policy.json例 使用全局条件上下文键创建 IAM 角色我们建议在基于资源的策略中使用 aws:SourceArn和aws:SourceAccount全局条件上下文键,以此限制服务对特定资源的权限。这是防范混淆代理问题最有效的方法。您可以使用这两个全局条件上下文键并让 aws:SourceArn值包含账户 ID。在这种情况下,当aws:SourceAccount值和aws:SourceArn值中的账户使用相同策略语句时,确保二者使用相同的账户 ID。- 
                                    如果您想对单个资源进行跨服务访问,请使用 aws:SourceArn。
- 
                                    如果您想允许该账户中的任何资源与跨服务使用操作相关联,请使用 aws:SourceAccount。
 在此策略中,请务必使用 aws:SourceArn全局条件上下文键和访问角色资源的完整 Amazon Resource Name (ARN)。对于 S3 集成,请确保包含数据库实例 ARN,如以下示例所示。对于 Linux、macOS 或 Unix: aws iam create-role \ --role-namerds-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。
- 
                                    
将 IAM 策略附加到 IAM 角色
- 
                        以下 Amazon CLI 命令将策略附加到名为 rds-s3-integration-role的角色。将your-policy-arn对于 Linux、macOS 或 Unix: aws iam attach-role-policy \ --policy-arnyour-policy-arn\ --role-namerds-s3-integration-role对于 Windows: aws iam attach-role-policy ^ --policy-arnyour-policy-arn^ --role-namerds-s3-integration-role