这是我用来创建服务帐户并为其绑定角色的 terraform 代码:
resource "google_service_account" "sa-name" {
account_id = "sa-name"
display_name = "SA"
}
resource "google_project_iam_binding" "firestore_owner_binding" {
role = "roles/datastore.owner"
members = [
"serviceAccount:sa-name@${var.project}.iam.gserviceaccount.com",
]
depends_on = [google_service_account.sa-name]
}
Run Code Online (Sandbox Code Playgroud)
上面的代码效果很好......除了它datastore.owner
从之前分配给该角色的项目中的任何其他服务帐户中删除了。我们有一个多个团队使用的单个项目,并且有不同团队管理的服务帐户。我的 terraform 代码只有我们团队的服务帐户,我们最终可能会破坏其他团队的服务帐户。
有没有另一种方法可以在 terraform 中做到这一点?
这当然可以通过 GCP UI 或 gcloud cli 完成,而不会出现任何问题或影响其他 SA。
service-accounts google-cloud-platform terraform terraform-provider-gcp
我尝试通过 Dataproc UI 提交 pyspark 作业并不断收到错误,看起来它没有加载 kafka 流包。
这是我的工作中 UI 提供的 REST 命令:
POST /v1/projects/projectname/regions/global/jobs:submit/
{
"projectId": "projectname",
"job": {
"placement": {
"clusterName": "cluster-main"
},
"reference": {
"jobId": "job-33ab811a"
},
"pysparkJob": {
"mainPythonFileUri": "gs://projectname/streaming.py",
"args": [
"--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.2.0"
],
"jarFileUris": [
"gs://projectname/spark-streaming-kafka-0-10_2.11-2.2.0.jar"
]
}
}
}
我尝试将 kafka 包作为 args 和 jar 文件传递。
这是我的代码(streaming.py
):
from pyspark import SparkContext
from pyspark.sql import SparkSession
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils
import json
sc = SparkContext()
spark = SparkSession.builder.master("local").appName("Spark-Kafka-Integration").getOrCreate() …
Run Code Online (Sandbox Code Playgroud)