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

创建 Object Lambda 访问点

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

  • 一个 IAM 策略

  • 一个 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 访问点)

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

使用 Amazon CLI 创建 Object Lambda 访问点

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

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

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

  3. 在您的账户中创建一个 Lambda 函数,用于转换 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 访问点授予账户 444455556666 的 GetObject 权限。

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

    aws s3control put-access-point-policy-for-object-lambda --account-id 123456789012 --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 访问点配置显示了启用了一个参数以及范围和分段编号的负载。

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

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

有关使用 Amazon CloudFormation 配置 Object Lambda 接入点的更多信息,请参阅《 Amazon CloudFormation 用户指南》中的 AWS::S3ObjectLambda::AccessPoint

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