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

创建 Object Lambda 访问点

Object Lambda 访问点恰好与一个标准访问点相关联,因此也与一个 Amazon S3 存储桶相关联。要创建 Object Lambda 访问点,您需要以下资源:

  • 一个 IAM policy

  • 一个 Amazon S3 存储桶

  • 一个 标准 S3 访问点

  • Amazon Lambda 函数

以下各部分介绍如何使用 Amazon Web Services Management Console和 Amazon CLI 创建 Object Lambda 访问点。

创建 Object Lambda 接访问点

有关如何使用 REST API 创建 Object Lambda 接入点的信息,请参阅 Amazon Simple Storage Service API 参考中的 CreateAccessPointForObjectLambda

使用控制台创建 Object Lambda 访问点

  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在控制台左侧的导航窗格中,请选择 Object Lambda access points(Object Lambda 访问点)。

  3. Object Lambda access points(Object Lambda 访问点) 页面上,请选择 Create Object Lambda access point(创建 Object Lambda 访问点)。

  4. 对于 Object Lambda access point name (Object Lambda 访问点名称),输入想要使用的访问点名称。

    与标准访问点一样,同样具有命名规则。有关更多信息,请参阅命名 Amazon S3 访问点的规则

  5. 对于 Supporting Access Point(支持访问点),请输入或浏览到要使用的标准访问点。访问点必须与要转换的对象位于同一 Amazon Web Services 区域中。

  6. 调用 Lambda 函数,您可以选择使用预构建的函数或在 Amazon Web Services 账户 中输入 Amazon Lambda 函数的 Amazon Resource Name (ARN)。

    有关预构建的函数的更多信息,请参阅 使用 Amazon 构建的 Lambda 函数

  7. (可选)对于 Range and part number (范围和分段编号),您必须启用此选项才能处理带有范围和分段编号标头的 GET 请求。选择此选项后,将确认 Lambda 函数能否识别和处理这些请求。有关范围标头和分段编号的更多信息,请参阅 使用 Range 和 partNumber 标头

  8. (可选)在 Payload (负载) 下,添加 JSON 文本,以向 Lambda 函数提供其他信息。负载是可选 JSON,您可以将其作为输入提供给 Lambda 函数。您可以为调用同一 Lambda 函数的不同 Object Lambda 访问点配置具有不同参数的负载,从而扩展 Lambda 函数的灵活性。

  9. (可选)对于 Request metrics (请求指标),请选择 enable (启用)disable (禁用),以将 Amazon S3 监控添加到 Object Lambda 访问点。请求指标按标准 CloudWatch 费率计费。

  10. (可选)在 Object Lambda access point policy (Object Lambda 访问点策略) 下,设置资源策略。此资源策略向指定的 Object Lambda 访问点授予 GetObject 权限。

  11. 请选择 Create Object Lambda access point(创建 Object Lambda 访问点)。

要使用 Amazon CloudFormation 模板创建 Object Lambda 访问点

  1. S3 Object Lambda default configuration(S3 对象 Lambda 原定设置配置)中下载 Amazon Lambda 函数部署包 s3objectlambda_deployment_package.zip

  2. 将软件包上载到启用了对象版本控制的 Amazon S3 存储桶。

    aws s3api put-object --bucket Amazon S3 bucket name --key s3objectlambda_deployment_package.zip --body release/s3objectlambda_deployment_package.zip
  3. S3 Object Lambda default configuration(S3 对象 Lambda 原定设置配置)中下载 Amazon CloudFormation 模板 s3objectlambda_defaultconfig.yaml

  4. 将模板部署到 Amazon 账户。

    aws cloudformation deploy --template-file s3objectlambda_defaultconfig.yaml \ --stack-name Amazon CloudFormation stack name --parameter-overrides ObjectLambdaAccessPointName=Object Lambda access point name \ SupportingAccessPointName=Amazon S3 access point S3BucketName=Amazon S3 bucket \ LambdaFunctionS3BucketName=Amazon S3 bucket containing your Lambda package LambdaFunctionS3Key=Lambda object key LambdaFunctionS3ObjectVersion=Lambda object version LambdaFunctionRuntime=Lambda function runtime --capabilities capability_IAM

有关修改 Amazon CloudFormation 模板的原定设置配置的更多信息,请参阅 使用 Amazon CloudFormation 模板以自动化 S3 对象 Lambda 设置

使用 Amazon CLI 创建 Object Lambda 访问点

以下示例为账户 111122223333 中的存储桶 DOC-EXAMPLE-BUCKET1 创建了一个名为 my-object-lambda-ap 的 Object Lambda 访问点。此示例假定已创建了名为 example-ap 的标准访问点。有关创建标准访问点的信息,请参阅 创建访问点

此示例使用 Amazon 预构建的函数 compress。有关示例 Amazon Lambda 函数,请参阅 使用 Amazon 构建的 Lambda 函数

  1. 创建存储桶。在此示例中,我们将使用 DOC-EXAMPLE-BUCKET1。有关创建存储桶的更多信息,请参阅 创建存储桶

  2. 创建标准访问点并将其附加到存储桶。在此示例中,我们将使用 example-ap。有关创建标准访问点的信息,请参阅 创建访问点

  3. 在您的账户中创建一个 Lambda 函数,用于转换 Amazon S3 对象。请参阅 Amazon Lambda 开发人员指南中的将 Lambda 与 Amazon CLI 结合使用。您还可以使用 Amazon 预构建的 Lambda 函数。

  4. 创建一个名为 my-olap-configuration.json 的 JSON 配置文件。在此配置中,提供在前面步骤中创建的支持访问点和 Lambda 函数 ARN。

    { "SupportingAccessPoint" : "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap", "TransformationConfigurations": [{ "Actions" : ["GetObject"], "ContentTransformation" : { "AwsLambda": { "FunctionPayload" : "{\"compressionType\":\"gzip\"}", "FunctionArn" : "arn:aws:lambda:us-east-1:111122223333:function/compress" } } }] }
  5. 运行 create-access-point-for-object-lambda 来创建 Object Lambda 访问点。

    aws s3control create-access-point-for-object-lambda --account-id 111122223333 --name my-object-lambda-ap --configuration file://my-olap-configuration.json
  6. (可选)创建名为的 my-olap-policy.json JSON 策略文件。

    此资源策略向指定的 Object Lambda 访问点授予账户 444455556666GetObject 权限。

    { "Version": "2008-10-17", "Statement": [ { "Sid": "Grant account 444455556666 GetObject access", "Effect": "Allow", "Action": "s3-object-lambda:GetObject", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Resource": "your-object-lambda-access-point-arn" } ] }
  7. (可选)运行 put-access-point-policy-for-object-lambda 来设置资源策略。

    aws s3control put-access-point-policy-for-object-lambda --account-id 111122223333 --name my-object-lambda-ap --policy file://my-olap-policy.json
  8. (可选)指定负载。

    有效负载是可选 JSON,您可以将其作为输入提供给 Amazon Lambda 函数。您可以为调用同一 Lambda 函数的不同 Object Lambda 访问点配置具有不同参数的负载,从而扩展 Lambda 函数的灵活性。

    以下 Object Lambda 访问点配置显示了带有两个参数的负载。

    { "SupportingAccessPoint": "AccessPointArn", "CloudWatchMetricsEnabled": false, "TransformationConfigurations": [{ "Actions": ["GetObject"], "ContentTransformation": { "AwsLambda": { "FunctionArn": "FunctionArn", "FunctionPayload": "{\"res-x\": \"100\",\"res-y\": \"100\"}" } } }] }

    以下 Object Lambda 访问点配置显示了启用了一个参数以及 GetObject-RangeGetObject-PartNumber 的有效负载。

    { "SupportingAccessPoint":"AccessPointArn", "CloudWatchMetricsEnabled": false, "AllowedFeatures": ["GetObject-Range", "GetObject-PartNumber"], "TransformationConfigurations": [{ "Actions": ["GetObject"], "ContentTransformation": { "AwsLambda": { "FunctionArn":"FunctionArn", "FunctionPayload": "{\"compression-amount\": \"5\"}" } } }] }
    重要

    使用 Object Lambda 访问点时,确保有效负载不包含任何机密信息。

您可以使用 Amazon S3 提供的原定设置配置创建 Object Lambda 访问点。您可以从 GitHub repository(GitHub 存储库)下载 Amazon CloudFormation 模板和 Lambda 函数源代码,并部署这些资源以设置函数对象 Lambda 访问点。

要上载 Lambda 函数部署软件包

  1. 下载 Amazon Lambda 函数部署包 s3objectlambda_deployment_package.zip,其位于 S3 Object Lambda default configuration(S3 对象 Lambda 原定设置配置)。

  2. 将软件包上载到启用了对象版本控制的 Amazon S3 存储桶。

要使用 Amazon CloudFormation 控制台创建 Object Lambda 访问点

  1. 下载 Amazon CloudFormation 模板 s3objectlambda_defaultconfig.yaml,其位于 S3 Object Lambda default configuration(S3 对象 Lambda 原定设置配置)。

  2. 登录 Amazon 管理控制台,并通过以下网址打开 Amazon CloudFormation 控制台:https://console.aws.amazon.com/cloudformation

  3. 在 Amazon CloudFormation 主页中,请选择 Create stack(创建堆栈)。

  4. 对于 Prerequisite - Prepare template(先决条件 - 准备模板),请选择 Template is ready(模板已就绪)。

  5. 对于 Specify template(指定模板),请选择 Upload a template file(上载模板文件)并上载 s3objectlambda_defaultconfig.yaml

  6. 选择 Next (下一步)

  7. Specify stack details(指定堆栈详细信息)页面上,输入堆栈名称。

  8. 选择 Next (下一步)

  9. 在 Parameters 部分中,指定在堆栈模板中定义的以下参数:

    1. 在您为 LambdaFunctionS3BucketName 上载部署文件包的地方输入 Amazon S3 存储桶名称。

    2. 在您为 LambdaFunctionS3Key 上载部署文件包的地方输入 Amazon S3 对象密钥。

    3. 在您为 LambdaFunctionS3ObjectVersion 上载部署文件包的地方输入 Amazon S3 对象版本。

    4. 输入适用于的 Lambda 函数的首选运行时 LambdaFunctionRuntime。可用的选项为 nodejs14.xpython3.9java11

    5. ObjectLambdaAccessPointName 的对象 Lambda 访问点输入名称。

    6. 输入 Amazon S3 存储桶名称,它将与 S3BucketName 的对象 Lambda 接入点相关联。

    7. SupportingAccessPointName 输入支持访问点的名称。

      注意

      这是与您在上一步中选择的 Amazon S3 存储桶相关联的访问点。如果您没有任何与 Amazon S3 存储桶相关联的访问点,则可以配置模板,以通过为 CreateNewSupportingAccessPoint 选择 true 来为您创建一个。

  10. 选择 Next (下一步)

  11. Configure stack options(配置堆栈选项) 页面上,请选择 Next(下一步)。

    有关此页面上的可选设置的更多信息,请参阅 Amazon CloudFormation 用户指南中的设置 Amazon CloudFormation 堆栈选项

  12. Review(查看)页面中,请选择 Create stack(创建堆栈)。

有关修改 Amazon CloudFormation 模板的原定设置配置的更多信息,请参阅 使用 Amazon CloudFormation 模板以自动化 S3 对象 Lambda 设置

有关在没有模板的情况下使用 Amazon CloudFormation 配置 Object Lambda 接入点的更多信息,请参阅 Amazon CloudFormation 用户指南中的 AWS::S3ObjectLambda::AccessPoint

有关使用 Amazon CDK 配置 Object Lambda 接入点的更多信息,请参阅 Amazon Cloud Development Kit (Amazon CDK) API 参考中的 AWS::S3ObjectLambda 构造库