为 Object Lambda 访问点配置 IAM 策略 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

为 Object Lambda 访问点配置 IAM 策略

S3 访问点支持 Amazon Identity and Access Management (IAM) 资源策略,这些策略允许您按资源、用户或其他条件控制访问点的使用。

对于一个 Amazon Web Services 账户 ,以下四项资源必须具有使用 Object Lambda 访问点的权限:

  • IAM 用户或角色

  • 存储桶和关联的标准访问点

  • Object Lambda 访问点

  • Amazon Lambda 函数

这些示例假设您具有以下资源:

  • 将权限委托给访问点的 Amazon S3 存储桶。有关更多信息,请参阅 将访问控制委派到访问点

    存储桶具有以下 Amazon Resource Name (ARN):

    arn:aws:s3:::DOC-EXAMPLE-BUCKET1

  • 此存储桶上具有以下 ARN 的 Amazon S3 标准访问点:

    arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point

  • 具有以下 ARN 的 Object Lambda 访问点:

    arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-ap

  • 具有以下 ARN 的 Amazon Lambda Lambda 函数:

    arn:aws:lambda:us-east-1:111122223333:function/MyObjectLambdaFunction

注意

如果使用您的账户中的 Lambda 函数,则必须在策略声明中包含函数版本。例如 。arn:aws:lambda:us-east-1:111122223333:function/MyObjectLambdaFunction:$LATEST

以下 IAM 策略授予用户与这些资源进行交互的权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLambdaInvocation", "Action": [ "lambda:InvokeFunction" ], "Effect": "Allow", "Resource": "arn:aws:lambda:us-east-1:111122223333:function/MyObjectLambdaFunction:$LATEST", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "s3-object-lambda.amazonaws.com" ] } } }, { "Sid": "AllowStandardAccessPointAccess", "Action": [ "s3: Get*", "s3: List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "s3-object-lambda.amazonaws.com" ] } } }, { "Sid": "AllowObjectLambdaAccess", "Action": [ "s3-object-lambda:Get*", "s3-object-lambda:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-ap" } ] }

Amazon Lambda 函数需要使用 WriteGetObjectResponse 回调 Object Lambda 访问点的权限。将以下语句添加到 Lambda 函数使用的 Execution 角色。

{ { "Sid": "AllowObjectLambdaAccess", "Action": ["s3-object-lambda:WriteGetObjectResponse"], "Effect": "Allow", "Resource": "*" }

将上下文键与 Object Lambda 访问点结合使用

借助 S3 Object Lambda,GET 请求将自动调用 Lambda 函数,且所有其他请求将转发到 S3。S3 Object Lambda 将评估与请求的连接或签名相关的上下文键,如 s3-object-lambda:TlsVersions3-object-lambda:AuthType。S3 评估所有其他上下文键,例如 s3:prefix