跳至内容

如何在 Quick Sight 控制面板上使用私有 Amazon S3 存储桶中的图像?

3 分钟阅读
0

我想在 Amazon Quick Sight 控制面板上使用私有 Amazon Simple Storage Service (Amazon S3) 存储桶中的图像。

解决方法

要在 Quick Sight 控制面板或报告中使用私有 Amazon S3 存储桶中的图像,请使用 AWS Lambda API 或 Amazon CloudFront 控制台。

Lambda API

要使用 Lambda API,请创建一个 Lambda 函数,然后创建一个 Amazon API Gateway 触发器。

创建 Lambda 函数

完成以下步骤:

  1. 打开 Amazon S3 控制台
  2. 在导航窗格中,选择 Buckets(存储桶),然后选择您的存储桶。
  3. 选择 Upload(上传)。
  4. .jpg 格式将图像上传到存储桶
  5. 运行以下命令以创建 Lambda 函数:
    import boto3
    import base64
    
    def lambda_handler(event, context):
        s3 = boto3.client("s3")
        downloaded_s3_object = s3.get_object(Bucket="S3 BUCKET NAME", Key="Image.jpg")
        return base64.b64encode(downloaded_s3_object["Body"].read())
    **注意:**请将 S3 BUCKET NAMEdownloaded_s3_object 替换为您的信息。Lambda AWS Identity and Access Management (IAM) 角色必须拥有从 S3 存储桶获取对象的权限。对于 Lambda 函数,请将 Runtime(运行时)设置为 Python 3.9
  6. 选择 Deploy(部署)。

创建 API Gateway 触发器

完成以下步骤:

  1. 打开 API Gateway 控制台
  2. 在导航窗格中,选择 API,然后选择 Create API(创建 API)。
  3. REST API 下,选择 Build(构建)。
  4. Create REST API(创建 REST API)页面的 API details(API 详细信息)下,选择 New API(新建 API),然后输入以下信息:
    输入您的 API 的名称,然后选择 Create API(创建 API)。
    (可选)输入 API 的描述。
    对于 API endpoint type(API 端点类型),选择 Regional(区域)。然后,选择 Create API(创建 API)。
  5. Resources(资源)页面的 Methods(方法)下,选择 Create method(创建方法)。
  6. Create method(创建方法)页面上,输入以下信息:
    对于 Method type(方法类型),选择 GET
    对于 Integration type(集成类型),选择 Lambda Function(Lambda 函数)。
    对于 Lambda function(Lambda 函数),选择 AWS 区域和您的 Lambda 函数。
  7. 选择 Create method(创建方法)。
  8. Resources(资源)页面的 Method request settings(方法请求设置)下,选择 Edit(编辑)。
  9. Edit method request(编辑方法请求)页面的 HTTP request headers(HTTP 请求标头)下,选择 Add header(添加标头)。
  10. 对于 Name(名称),输入 Content-Type,然后选择 Save(保存)。
  11. Resources(资源)页面的 Integration response(集成响应)下,选择 Edit(编辑)。
  12. Response details(响应详细信息)下,对于 Content handling(内容处理),选择 Convert to binary(转换为二进制)。
  13. 选择 Save(保存)。
  14. 部署您的 API
    **注意:**有关详细信息,请参阅为 API Gateway 中的 REST API 设置阶段
  15. Stages(阶段)页面的 Stage details(阶段详细信息)下,记下调用 URL。例如,https://1a2bc3d456.execute-api.region.amazonaws.com/test
  16. 打开 Quick Suite 控制台
  17. 在导航窗格中,选择 Analyses(分析),然后选择要添加图像的分析。
  18. Visuals(视觉对象)菜单中,选择 Custom visual content(自定义视觉对象内容)。
  19. 选择 Customize visual(自定义视觉对象)。
  20. Properties(属性)窗格的 Customize content(自定义内容)下,输入调用 URL。
  21. 启用 Show as image(显示为图像)选项,然后选择 Apply(应用)。

API Gateway 将返回图像的 base64 字符串。Quick Sight 洞察编辑器使用 API 的 URL 来显示图像。

CloudFront 控制台

完成以下步骤:

  1. 打开 CloudFront 控制台
  2. 在导航窗格中,选择 Distributions(分配),然后选择 Create distribution(创建分配)。
  3. Create distribution(创建分配)页面上,输入以下信息:
    对于 Origin domain(源域),输入您的源的域名。
    对于 Origin access(源访问),选择 Origin access control settings (recommended)(源访问控制设置(推荐))。
    对于 Origin access control(源访问控制),选择 Create new OAC(创建新 OAC),然后选择 Create(创建)。
  4. 对于 Web Application Firewall (WAF)(Web 应用程序防火墙 (WAF)),选择 Do not enable security protections(不启用安全保护)。
  5. 选择 Create distribution(创建分配)。
  6. Distribution details(分配详细信息)页面上,记下分配域名。例如,d2icdkfpjckhwg.cloufront.net
  7. 在 "The S3 bucket policy needs to be updated"(需要更新 S3 存储桶策略)消息中,选择 Copy policy(复制策略)。
  8. 打开 Amazon S3 控制台
  9. General purpose buckets(通用存储桶)下,选择在源域中托管内容的存储桶。
  10. Bucket details(存储桶详细信息)页面的 Permissions(权限)下,选择 Edit(编辑)。
  11. 输入策略,然后选择 Save changes(保存更改)。
  12. Bucket details(存储桶详细信息)页面的 Objects(对象)下,选择对象。
  13. Object details(对象详细信息)页面上,记下 S3 URI。例如,s3://your-bucket-name/your_image.png
  14. 在新的浏览器标签页中,输入 S3 URI。例如,d2icdkfpjckhwg.cloufront.net/your_image.png
  15. 在 Quick Sight 控制面板的 Properties(属性)下,选择 Visual(视觉对象)部分,然后在 URL 字段中输入自定义 URI。
  16. 选择 Apply(应用)。