将 Amazon RDS for Db2 数据库实例与 Amazon S3 集成
您可以使用 Amazon RDS 存储过程在您的 Amazon RDS for Db2 数据库实例和 Amazon Simple Storage Service(Amazon S3)存储桶之间传输文件。有关更多信息,请参阅 Amazon RDS for Db2 存储过程参考。
注意
数据库实例和 Amazon S3 存储桶必须位于同一 Amazon Web Services 区域。
要让 RDS for Db2 与 Amazon S3 集成,您的数据库实例必须可以访问 RDS for Db2 所在的 Amazon S3 存储桶。如果您当前没有 S3 存储桶,请创建存储桶。
步骤 1:创建 IAM policy
在此步骤中,您将创建一个 Amazon Identity and Access Management(IAM)策略,该策略具有将文件从您的 Amazon S3 存储桶传输到您的 RDS 数据库实例所需的权限。此步骤假定您已创建了 S3 桶。有关更多信息,请参阅《Amazon S3 用户指南》中的创建存储桶。
创建策略前,请记下以下信息:
-
存储桶的 Amazon 资源名称(ARN)。
-
您的 Amazon Key Management Service(Amazon KMS)密钥的 ARN,如果您的存储桶使用 SSE-KMS 或 SSE-S3 加密。
创建包含以下权限的 IAM policy:
"kms:GenerateDataKey", "kms:Decrypt", "s3:PutObject", "s3:GetObject", "s3:AbortMultipartUpload", "s3:ListBucket", "s3:DeleteObject", "s3:GetObjectVersion", "s3:ListMultipartUploadParts"
您可以使用 Amazon Web Services Management Console或 Amazon Command Line Interface(Amazon CLI)创建 IAM policy。
创建 IAM 策略以允许 Amazon RDS 访问 Amazon S3 存储桶
登录到 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择策略。
-
选择创建策略,然后选择 JSON。
-
按服务添加操作。要将文件从 Amazon S3 存储桶传输到 Amazon RDS,必须选择存储桶权限和对象权限。
-
展开 Resources(资源)。您必须指定您的存储桶和对象资源。
-
选择下一步。
-
对于策略名称,输入此策略的名称。
-
(可选)对于描述,输入此策略的描述。
-
选择创建策略。
创建 IAM 策略以允许 Amazon RDS 访问 Amazon S3 存储桶
-
运行 create-policy 命令。在以下示例中,将
iam_policy_name
和s3_bucket_name
替换为 IAM policy 的名称以及 RDS for Db2 数据库所在 Amazon S3 存储桶的名称。对于 Linux、macOS 或 Unix:
aws iam create-policy \ --policy-name
iam_policy_name
\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "s3:PutObject", "s3:GetObject", "s3:AbortMultipartUpload", "s3:ListBucket", "s3:DeleteObject", "s3:GetObjectVersion", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::s3_bucket_name
/*", "arn:aws:s3:::s3_bucket_name
" ] } ] }'对于 Windows:
aws iam create-policy ^ --policy-name
iam_policy_name
^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:AbortMultipartUpload", "s3:ListBucket", "s3:DeleteObject", "s3:GetObjectVersion", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::s3_bucket_name
/*", "arn:aws:s3:::s3_bucket_name
" ] } ] }' -
创建策略后,请记下策略的 ARN。您需要步骤 2:创建 IAM 角色并附加您的 IAM policy的 ARN。
有关创建 IAM policy 的更多信息,请参阅《IAM 用户指南》中的创建 IAM policy。
步骤 2:创建 IAM 角色并附加您的 IAM policy
此步骤假定您已在步骤 1:创建 IAM policy中创建了 IAM 策略。在此步骤中,您将为 RDS for Db2 数据库实例创建一个 IAM 角色,然后将 IAM policy 附加到该角色。
您可以使用 Amazon Web Services Management Console或 Amazon CLI 为数据库实例创建 IAM 角色。
创建 IAM 角色并向其附加 IAM policy
登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择角色。
-
选择 Create role(创建角色)。
-
对于可信实体类型,请选择 Amazon Web Services 服务。
-
对于服务或使用案例,选择 RDS,然后选择 RDS – 向数据库添加角色。
-
选择下一步。
-
对于权限策略,搜索并选择您创建的 IAM policy 的名称。
-
选择下一步。
-
对于 Role name(角色名称),输入一个角色名称。
-
(可选)在描述中,输入新角色的描述。
-
选择 Create role(创建角色)。
创建 IAM 角色并向其附加 IAM policy
-
运行 create-role 命令。在以下示例中,将
iam_role_name
替换为您的 IAM 角色的名称。对于 Linux、macOS 或 Unix:
aws iam create-role \ --role-name
iam_role_name
\ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'对于 Windows:
aws iam create-role ^ --role-name
iam_role_name
^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }' -
创建角色之后,记下该角色的 ARN。您需要步骤 3:将您的 IAM 角色添加到 RDS for Db2 数据库实例的 ARN。
-
运行 attach-role-policy 命令。在以下示例中,将
iam_policy_arn
替换为您在步骤 1:创建 IAM policy中创建的 IAM policy。将iam_role_name
替换为刚创建的 IAM 角色的名称。对于 Linux、macOS 或 Unix:
aws iam attach-role-policy \ --policy-arn
iam_policy_arn
\ --role-nameiam_role_name
对于 Windows:
aws iam attach-role-policy ^ --policy-arn
iam_policy_arn
^ --role-nameiam_role_name
有关更多信息,请参阅《IAM 用户指南》中的创建向 IAM 用户委派权限的角色。
步骤 3:将您的 IAM 角色添加到 RDS for Db2 数据库实例
在此步骤中,您将 IAM 角色添加到 RDS for Db2 数据库实例。请注意以下要求:
-
您必须具有访问 IAM 角色的权限,并向此角色附加所需的 Amazon S3 权限策略。
-
您一次只能将一个 IAM 角色与 RDS for Db2 数据库实例关联。
-
RDS for Db2 数据库实例必须处于可用状态。
您可以使用 Amazon Web Services Management Console或 Amazon CLI 向数据库实例添加 IAM 角色。
将 IAM 角色添加到 RDS for Db2 数据库实例
登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择 Databases(数据库)。
-
选择 RDS for Db2 数据库实例名称。
-
在 Connectivity & security(连接性和安全性)选项卡上,向下滚动到页面底部的 Manage IAM roles(管理 IAM 角色)部分。
-
对于向此实例添加 IAM 角色,选择您在步骤 2:创建 IAM 角色并附加您的 IAM policy中创建的角色。
-
对于 Feature (功能),选择 S3_INTEGRATION。
-
选择 Add role (添加角色)。
要将 IAM 角色添加到 RDS for Db2 数据库实例,请运行 add-role-to-db-instance 命令。在以下示例中,将 db_instance_name
和 iam_role_arn
替换为数据库实例的名称和您在步骤 2:创建 IAM 角色并附加您的 IAM policy中创建的 IAM 角色的 ARN。
对于 Linux、macOS 或 Unix:
aws rds add-role-to-db-instance \ --db-instance-identifier
db_instance_name
\ --feature-name S3_INTEGRATION \ --role-arniam_role_arn
\
对于 Windows:
aws rds add-role-to-db-instance ^ --db-instance-identifier
db_instance_name
^ --feature-name S3_INTEGRATION ^ --role-arniam_role_arn
^
要确认该角色已成功添加到 RDS for Db2 数据库实例,请运行 describe-db-instances 命令。在以下示例中,将 db_instance_name
替换为数据库实例的名称。
对于 Linux、macOS 或 Unix:
aws rds describe-db-instances \ --filters "Name=db-instance-id,Values=
db_instance_name
" \ --query 'DBInstances[].AssociatedRoles'
对于 Windows:
aws rds describe-db-instances ^ --filters "Name=db-instance-id,Values=
db_instance_name
" ^ --query 'DBInstances[].AssociatedRoles'
此命令生成类似于以下示例的输出:
[
[
{
"RoleArn": "arn:aws:iam::0123456789012:role/rds-db2-s3-role",
"FeatureName": "S3_INTEGRATION",
"Status": "ACTIVE"
}
]
]