AWS Private Link和VPC Endpoint都是用于将VPC与AWS服务进行安全且私有地连接的服务。它们的区别在于,AWS Private Link适用于连接AWS托管服务以及在VPC之间进行安全的跨账户连接,而VPC Endpoint则适用于连接支持VPC Endpoint的AWS服务和SaaS应用程序。
以下是连接RDS实例的VPC Endpoint示例(Python):
import boto3
rds = boto3.client('rds')
response = rds.create_db_instance(
DBInstanceIdentifier='my-db-instance',
DBInstanceClass='db.t2.micro',
Engine='mysql',
MasterUsername='root',
MasterUserPassword='password',
VpcSecurityGroupIds=[
'your-security-group-id',
],
DBSubnetGroupName='your-subnet-group',
MultiAZ=False,
PubliclyAccessible=False
)
response = rds.create_vpc_endpoint(
VpcEndpointType='Interface',
VpcId='your-vpc-id',
ServiceName='com.amazonaws.us-east-1.rds',
SubnetIds=[
'your-subnet-id',
],
SecurityGroupIds=[
'your-security-group-id',
],
PrivateDnsEnabled=True
)
以下是连接支持VPC Endpoint的S3的AWS Private Link示例(CloudFormation):
Resources:
VPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: '10.0.0.0/16'
EnableDnsSupport: true
EnableDnsHostnames: true
MyEndpointSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Allow communication to S3
VpcId: !Ref VPC
MyEndpoint:
Type: AWS::EC2::VPCEndpoint
Properties:
VpcId: !Ref VPC
ServiceName: com.amazonaws.us-east-1.s3
RouteTableIds:
- !Ref PublicRouteTable
- !Ref PrivateRouteTable
SecurityGroupIds:
- !Ref MyEndpointSecurityGroup
PrivateDnsEnabled: true
S3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-s3-bucket
AccessControl: Private
Tags:
- Key: Name
Value: my-s3-bucket
S3VpcPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref S3Bucket