要设置只有特定的EC2实例可以访问RDS,可以通过以下步骤进行设置:
import boto3
ec2 = boto3.client('ec2')
response = ec2.create_security_group(
Description='Allow RDS access only from specific EC2 instances',
GroupName='RDSAccessSG',
VpcId='your_vpc_id'
)
security_group_id = response['GroupId']
data = ec2.authorize_security_group_ingress(
GroupId=security_group_id,
IpPermissions=[
{
'IpProtocol': 'tcp',
'FromPort': 3306,
'ToPort': 3306,
'UserIdGroupPairs': [
{
'GroupId': 'your_ec2_security_group_id'
},
]
},
]
)
print('Security Group Created %s in vpc %s.' % (security_group_id, 'your_vpc_id'))
在上面的代码示例中,'your_vpc_id'应该替换为您的VPC ID,'your_ec2_security_group_id'应该替换为您的EC2实例所在的安全组的ID。这将创建一个名为'RDSAccessSG'的安全组,并允许来自特定EC2实例的3306端口的访问。
import boto3
autoscaling = boto3.client('autoscaling')
response = autoscaling.create_auto_scaling_group(
AutoScalingGroupName='my-auto-scaling-group',
LaunchConfigurationName='my-launch-config',
MinSize=1,
MaxSize=5,
DesiredCapacity=1,
VPCZoneIdentifier='your_subnet_ids',
HealthCheckType='EC2',
HealthCheckGracePeriod=300,
Tags=[
{
'Key': 'Name',
'Value': 'my-auto-scaling-group',
'PropagateAtLaunch': True
},
],
TargetGroupARNs=['your_target_group_arn'],
TerminationPolicies=[
'OldestInstance'
],
NewInstancesProtectedFromScaleIn=True,
InstanceProtection=[],
ServiceLinkedRoleARN='your_service_linked_role_arn',
Tags=[
{
'Key': 'Name',
'Value': 'my-auto-scaling-group',
'PropagateAtLaunch': True
},
],
SecurityGroups=[
'your_ec2_security_group_id',
'your_rds_security_group_id'
]
)
print('Auto Scaling Group Created %s.' % response['AutoScalingGroupName'])
在上述示例代码中,'your_subnet_ids'应替换为您的子网ID列表,'your_target_group_arn'应替换为您的目标组ARN,'your_service_linked_role_arn'应替换为您的服务链接角色ARN,'your_ec2_security_group_id'和'your_rds_security_group_id'应分别替换为您的EC2实例和RDS实例的安全组ID。
这样设置后,只有具有特定安全组ID的EC2实例才能访问RDS实例。请确保您在安全组中配置了适当的入站规则以允许RDS访问。