यहां मुख्य मुद्दा यह है कि आपको 1) S3 बकेट तक पहुंचने के लिए RDS इंस्टेंस में IAM भूमिका जोड़ने की आवश्यकता है और 2) VPC में S3 एंडपॉइंट जोड़ें जहां संचार की अनुमति देने के लिए RDS इंस्टेंस चलता है।
शेल में एडब्ल्यूएस क्ली कमांड का उपयोग करके मैंने इसे काम करने के लिए इस प्रक्रिया का पालन किया है (इसमें शामिल पर्यावरणीय चरों के मूल्य का ठीक से ध्यान रखें), आशा है कि यह मदद कर सकता है:
- IAM भूमिका बनाएं:
$ aws iam create-role \
--role-name $ROLE_NAME \
--assume-role-policy-document '{"Version": "2012-10-17", "Statement": [{"Effect": "Allow", "Principal": {"Service": "rds.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'
- IAM नीति बनाएं जो IAM भूमिका से जुड़ी होगी:
$ aws iam create-policy \
--policy-name $POLICY_NAME \
--policy-document '{"Version": "2012-10-17", "Statement": [{"Sid": "s3import", "Action": ["s3:GetObject", "s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::${BUCKET_NAME}", "arn:aws:s3:::${BUCKET_NAME}/*"]}]}'
- नीति संलग्न करें:
$ aws iam attach-role-policy \
--policy-arn arn:aws:iam::$AWS_ACCOUNT_ID:policy/$POLICY_NAME \
--role-name $ROLE_NAME
- एक विशिष्ट उदाहरण में भूमिका जोड़ें - इस चरण को हर नए उदाहरण के लिए दोहराया जाना चाहिए:
$ aws rds add-role-to-db-instance \
--db-instance-identifier $RDS_INSTANCE_NAME \
--feature-name s3Import \
--role-arn arn:aws:iam::$AWS_ACCOUNT_ID:role/$ROLE_NAME \
--region $REGION
- S3 सेवा के लिए VPC समापन बिंदु बनाएं:
$ aws ec2 create-vpc-endpoint \
--vpc-id $VPC_ID \
--service-name com.amazonaws.$REGION.s3
--route-table-ids $ROUTE_TABLE_ID
वीपीसी से संबंधित रूट टेबल आईडी जहां एंडपॉइंट बनाया गया है, उसे कमांड के माध्यम से पुनः प्राप्त किया जा सकता है
$ aws ec2 describe-route-tables | jq -r '.RouteTables[] | "\(.VpcId) \(.RouteTableId)"'