AWS::Transfer::User - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::Transfer::User

AWS::Transfer::User 资源创建用户并将其与现有服务器关联。您可以仅创建用户并将其与 IdentityProviderType 设置为 SERVICE_MANAGED 的服务器关联。可使用 CreateUser 的参数指定用户名、设置主目录、存储用户的公有密钥和分配用户的 AWS Identity and Access Management (IAM) 角色。您还可以选择添加范围缩小策略,并向可用于分组和搜索用户的标签分配元数据。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::Transfer::User", "Properties" : { "HomeDirectory" : String, "HomeDirectoryMappings" : [ HomeDirectoryMapEntry, ... ], "HomeDirectoryType" : String, "Policy" : String, "Role" : String, "ServerId" : String, "SshPublicKeys" : [ SshPublicKey, ... ], "Tags" : [ Tag, ... ], "UserName" : String } }

YAML

Type: AWS::Transfer::User Properties: HomeDirectory: String HomeDirectoryMappings: - HomeDirectoryMapEntry HomeDirectoryType: String Policy: String Role: String ServerId: String SshPublicKeys: - SshPublicKey Tags: - Tag UserName: String

属性

HomeDirectory

用户使用客户端登录到启用文件传输协议的服务器时的登录目录(文件夹)。

示例为 your-Amazon-S3-bucket-name>/home/username

必需:否

类型:字符串

最高1024

模式^$|/.*

Update requires: No interruption

HomeDirectoryMappings

逻辑目录映射指定哪些 Amazon S3 路径和密钥应对您的用户可见,以及使其对用户可见的方式。您需要指定“Entry”和“Target”对,其中 Entry 显示如何使路径可见,Target 是实际的 Amazon S3 路径。如果您只指定一个目标,则将按原样显示。您还需要确保您的 IAM 角色提供对 Target 中路径的访问权限。以下是示例。

'[ "/bucket2/documentation", { "Entry": "your-personal-report.pdf", "Target": "/bucket3/customized-reports/${transfer:UserName}.pdf" } ]'

在大多数情况下,您可以使用此值将您的用户锁定到指定的主目录(“chroot”),而不是使用缩小范围策略。为此,您可以将 Entry 设置为“/”并将 Target 设置为 HomeDirectory 参数值。

注意

如果 Amazon S3 中不存在逻辑目录条目的目标,则将忽略该条目。作为一种解决方法,您可以使用 Amazon S3 api 创建 0 字节对象作为目录的占位符。如果使用 CLI,请使用 s3api 调用而不是 s3,这样您可以使用 put-object 操作。例如,您使用以下内容:aws s3api put-object --bucket bucketname --key path/to/folder/。请确保键名称以“/”结尾,以便将其视为文件夹。

必需:否

类型HomeDirectoryMapEntry 列表

最高50

Update requires: No interruption

HomeDirectoryType

您希望用户在登录到启用文件传输协议的服务器时,用户主目录所属的登录目录(文件夹)类型。如果您将其设置为 PATH,则用户将在其文件传输协议客户端中原样看到 Amazon S3 存储桶的绝对路径。如果您将其设置为 LOGICAL,则需要针对您希望如何使 Amazon S3 路径对用户可见,在 HomeDirectoryMappings 中提供映射。

必需:否

类型:字符串

允许的值LOGICAL | PATH

Update requires: No interruption

Policy

适用于您的用户的范围缩小策略,可让您跨多个用户使用相同的 IAM 角色。此策略将用户的访问范围缩小至 Amazon S3 存储桶的一部分。可在此策略中使用的变量包括 ${Transfer:UserName}${Transfer:HomeDirectory}${Transfer:HomeBucket}

注意

对于范围缩小策略,AWS Transfer 系列将策略存储为 JSON blob,而不是策略的 Amazon 资源名称 (ARN)。您将策略保存为 JSON blob 并将其传递给 Policy 参数。

有关范围缩小策略的示例,请参阅创建范围缩小策略

有关更多信息,请参阅 AWS Security Token Service API 参考 中的 AssumeRole

必需:否

类型:字符串

最高2048

Update requires: No interruption

Role

控制用户对 Amazon S3 存储桶的访问的 IAM 角色。附加到此角色的策略将确定在将文件传入和传出 Amazon S3 存储桶时要为用户提供的访问级别。IAM 角色还应包含信任关系,该关系允许启用文件传输协议的服务器在为用户的传输请求提供服务时访问您的资源。

必需:是

类型:字符串

最低20

最高2048

模式arn:.*role/.*

Update requires: No interruption

ServerId

系统为启用文件传输协议的服务器实例分配的唯一标识符。这是将您的用户添加到的特定服务器。

必需:是

类型:字符串

最低19

最高19

模式^s-([0-9a-f]{17})$

Update requires: Replacement

SshPublicKeys

指定为所述用户存储的 Secure Shell (SSH) 密钥的公有密钥部分。

必需:否

类型SshPublicKey 的列表

最高5

Update requires: No interruption

Tags

可用于分组和搜索用户的键/值对。标签是出于任何目的附加到用户的元数据。

必需:否

类型Tag 的列表

最高50

Update requires: No interruption

UserName

一个标识用户并与 ServerId 指定的启用文件传输协议的服务器关联的唯一字符串。此用户名长度最少为 3 个字符,最多为 32 个字符以下为有效字符:a-z、A-Z、0-9、下划线和连字符。用户名不能以连字符开头。

必需:是

类型:字符串

最低3

最高32

模式^[a-zA-Z0-9_][a-zA-Z0-9_-]{2,31}$

Update requires: Replacement

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回用户名,例如 transfer_user

For more information about using the Ref function, see Ref.

Fn::GetAtt

Fn::GetAtt 内部函数返回此类型的一个指定属性的值。以下为可用属性和示例返回值。

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt

Arn

与用户关联的 Amazon 资源名称,格式为 arn:aws:transfer:region:account-id:user/server-id/username

用户 ARN 的示例是:arn:aws:transfer:us-east-1:123456789012:user/user1

ServerId

用户连接到的服务器的 ID。

示例 ServerIds-01234567890abcdef

UserName

标识与服务器关联的用户账户的唯一字符串。

示例 UserNametransfer-user-1

示例

将用户与服务器关联

以下示例将用户与服务器关联。

JSON

{ "transfer_user": { "Type": "AWS::Transfer::User", "Properties": { "HomeDirectoryMappings": [ { "Entry": "/our-personal-report.pdf", "Target": "/bucket3/customized-reports/${transfer:UserName}.pdf" } ], "HomeDirectoryType": "LOGICAL", "Policy": { "Version": "2012-10-17T00:00:00.000Z", "Statement": { "Sid": "AllowFullAccessToBucket", "Action": "s3:*", "Effect": "Allow", "Resource": "arn:aws:s3:::bucket_name arn:aws:s3:::bucket_name/*" } }, "Role": "arn:aws:iam::176354371281:role/Transfer_role", "ServerId": "s-01234567890abcdef", "SshPublicKeys": "AAAAB3NzaC1yc2EAAAADAQABAAABAQCOtfCAis3aHfM6yc8KWAlMQxVDBHyccCde9MdLf4DQNXn8HjAHf+Bc1vGGCAREFUL1NO2PEEKING3ALLOWEDfIf+JBecywfO35Cm6IKIV0JF2YOPXvOuQRs80hQaBUvQL9xw6VEb4xzbit2QB6", "Tags": [ { "Key": "Group", "Value": "UserGroup1" } ], "UserName": "transfer_user" } } }

YAML

transfer_user: Type : AWS::Transfer::User Properties : HomeDirectoryMappings: - Entry: /our-personal-report.pdf Target: /bucket3/customized-reports/${transfer:UserName}.pdf HomeDirectoryType: LOGICAL Policy: Version: 2012-10-17 Statement: Sid: AllowFullAccessToBucket Action: s3:* Effect: Allow Resource: arn:aws:s3:::bucket_name arn:aws:s3:::bucket_name/* Role: arn:aws:iam::176354371281:role/Transfer_role ServerId: s-01234567890abcdef SshPublicKeys: AAAAB3NzaC1yc2EAAAADAQABAAABAQCOtfCAis3aHfM6yc8KWAlMQxVDBHyccCde9MdLf4DQNXn8HjAHf+Bc1vGGCAREFUL1NO2PEEKING3ALLOWEDfIf+JBecywfO35Cm6IKIV0JF2YOPXvOuQRs80hQaBUvQL9xw6VEb4xzbit2QB6 Tags: - Key: Group Value: UserGroup1 UserName: transfer_user

另请参阅

AWS Transfer 系列用户指南 中的 CreateUser