从转码器 API 进行跨项目存储桶访问

问题描述 投票:0回答:1

我们可以通过转码器API访问存储桶吗?存储桶位于GCP中的不同项目中。虽然 Transcoder Api 正在从不同的项目运行。

google-cloud-platform cloud developer-tools google-cloud-transcoder
1个回答
0
投票

简短的回答是肯定的,转码器 API 可以从另一个 GCP 项目的存储桶加载数据。您需要授予转码器API服务代理下载和上传文件的权限。棘手的部分是找到服务代理。默认情况下,Transcoder API 有权访问项目的所有 Cloud Storage 存储桶(同一项目)。当您创建第一个作业时,转码器 API 使用以下命名约定创建一个服务帐户:

[email protected]

您可以在官方文档阅读更多内容。

这是我设置跨项目存储访问的步骤。

  1. 在另一个项目中创建GCS存储桶。

    project1-demo-bucket

  2. 在另一个 GCP 项目 (project2) 中。创建转码器作业。

     gcloud transcoder jobs create \
     --input-uri="gs://project1-demo-bucket/ChromeCast.mp4" \
     --location=us-central1 \
     --output-uri="gs://project1-demo-bucket/output/"
    

您可以按照此快速入门了解详细信息。

它会因权限错误而失败,你可以检查作业:

gcloud transcoder jobs describe job_id --location=us-central1

因为您尚未授予转码器服务代理GCS存储桶权限。这一步是创建服务代理。

  1. 授予转码器服务代理目标 GCS 存储桶权限(在项目 1 中)。
gcloud storage buckets add-iam-policy-binding gs://project1-demo-bucket --member="serviceAccount:[email protected] --role="roles/storage.admin"

您可以使用 GCP 控制台执行此操作,建议仅在存储桶级别而不是项目级别授予。

  1. 在第 2 步重新运行相同的作业,您应该看到它成功完成。
© www.soinside.com 2019 - 2024. All rights reserved.