使用AWS Transfer for SFTP仅允许写入存储桶的访问,您可以按照以下步骤进行设置:
创建一个S3存储桶:
import boto3
s3_client = boto3.client('s3')
bucket_name = 'your-bucket-name'
s3_client.create_bucket(Bucket=bucket_name)
创建一个IAM角色,用于访问S3存储桶:
import boto3
iam_client = boto3.client('iam')
role_name = 'sftp-to-s3-role'
iam_client.create_role(
RoleName=role_name,
AssumeRolePolicyDocument='''{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "transfer.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}'''
)
iam_client.attach_role_policy(
RoleName=role_name,
PolicyArn='arn:aws:iam::aws:policy/AmazonS3FullAccess'
)
创建AWS Transfer for SFTP服务器:
import boto3
transfer_client = boto3.client('transfer')
s3_arn = 'arn:aws:s3:::your-bucket-name'
role_arn = 'arn:aws:iam::your-account-id:role/sftp-to-s3-role'
response = transfer_client.create_server(
EndpointType='VPC',
EndpointDetails={
'VpcEndpointId': 'your-vpc-endpoint-id'
},
IdentityProviderType='SERVICE_MANAGED',
IdentityProviderDetails={},
LoggingRole=role_arn,
Protocols=['SFTP'],
Tags=[
{
'Key': 'Name',
'Value': 'SFTP Server'
}
]
)
创建AWS Transfer for SFTP用户:
import boto3
transfer_client = boto3.client('transfer')
server_id = 'your-sftp-server-id'
username = 'sftp-user'
response = transfer_client.create_user(
ServerId=server_id,
UserName=username,
HomeDirectory='/',
Role='arn:aws:iam::your-account-id:role/sftp-to-s3-role'
)
配置AWS Transfer for SFTP服务器的存储桶访问:
import boto3
transfer_client = boto3.client('transfer')
server_id = 'your-sftp-server-id'
bucket_arn = 'arn:aws:s3:::your-bucket-name'
response = transfer_client.update_server(
ServerId=server_id,
IdentityProviderType='SERVICE_MANAGED',
IdentityProviderDetails={},
EndpointDetails={
'VpcEndpointId': 'your-vpc-endpoint-id',
'VpcId': 'your-vpc-id',
'SecurityGroupIds': ['your-security-group-id']
},
LoggingRole='arn:aws:iam::your-account-id:role/sftp-to-s3-role',
Protocols=['SFTP'],
DefaultPermissions=[
{
'HomeDirectory': '/',
'Perm': 'WRITE',
'Type': 'EXTENDED_SCOPE',
'Values': [bucket_arn]
}
]
)
通过以上步骤,您可以创建一个AWS Transfer for SFTP服务器,配置只允许写入指定存储桶的访问权限。请根据您的实际情况修改代码中的参数值。