我们可以通过转码器API访问存储桶吗?存储桶位于GCP中的不同项目中。虽然 Transcoder Api 正在从不同的项目运行。
简短的回答是肯定的,转码器 API 可以从另一个 GCP 项目的存储桶加载数据。您需要授予转码器API服务代理下载和上传文件的权限。棘手的部分是找到服务代理。默认情况下,Transcoder API 有权访问项目的所有 Cloud Storage 存储桶(同一项目)。当您创建第一个作业时,转码器 API 使用以下命名约定创建一个服务帐户:
[email protected]
您可以在官方文档阅读更多内容。
这是我设置跨项目存储访问的步骤。
在另一个项目中创建GCS存储桶。
project1-demo-bucket
在另一个 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存储桶权限。这一步是创建服务代理。
gcloud storage buckets add-iam-policy-binding gs://project1-demo-bucket --member="serviceAccount:[email protected] --role="roles/storage.admin"
您可以使用 GCP 控制台执行此操作,建议仅在存储桶级别而不是项目级别授予。