Поток данных позволяет указывать учетную запись службы, управляемую пользователем, , с помощью опции --serviceAccount
. Кроме того, я бы хотел выдать себя за службу с учетной записью для взаимодействия с ресурсами GCP перед отправкой задания. Одним из примеров использования может быть использование API-интерфейса FileSystems Beam SDK для проверки некоторых метаданных объекта GCS.
Как мне указать beam.sdk.io.FileSystems
и storage.StorageOptions
для использования ImpersonatedCredentials
?
Пример кода, который будет работать вне рабочих потоков GCP:
import com.google.cloud.storage.StorageOptions;
import org.apache.beam.sdk.io.FileSystems;
// list blobs in a GCS path
Storage storage = StorageOptions.getDefaultInstance().getService();
Page<Blob> blobs = storage.list(
bucketName,
BlobListOption.currentDirectory(),
BlobListOption.prefix(directory));
Resource resource = FileSystems.matchNewResource(path, false)
Олицетворяя учетную запись службы, я имею в виду с использованием недолговечных учетных данных SA , как, например, :
creds = ImpersonatedCredentials.create(ServiceAccountCredentials.getApplicationCredentials(),
"example-service-account@example-project.iam.gserviceaccount.com",
Collections.emptyList(), // list of delegates
Arrays.asList("https://www.googleapis.com/auth/devstorage.read_only"),
3600);