我在一个 GCP 项目上有一个(非管理员)帐户。
当我启动 Dataproc 集群时,GCP 会启动 3 个虚拟机。当我尝试通过SSH(在浏览器中)访问其中一个 VM 时,出现以下错误:
我尝试添加推荐的权限,但无法添加iam.serviceAccounts.actAs权限。
知道如何解决这个问题吗?我通读了 GCP 文档,但找不到解决方案。我有以下与我的帐户相关联的角色:
ssh-tunnel google-cloud-console google-cloud-platform google-cloud-dataproc
我想对我的 Pandas(或 py/spark)数据帧的一列中的值进行加密,例如,获取mobno以下数据帧中的encrypted_value列,对其进行加密并将结果放入该列中:

我想使用 AWS KMS 加密密钥。我的问题是:如何实现这一目标的最优雅的方式是什么?
我正在考虑使用 UDF,它将调用 boto3 的 KMS 客户端。就像是:
@udf
def encrypt(plaintext):
response = kms_client.encrypt(
KeyId=aws_kms_key_id,
Plaintext=plaintext
)
ciphertext = response['CiphertextBlob']
return ciphertext
Run Code Online (Sandbox Code Playgroud)
然后在整个列上应用这个 udf。
但我不太确定这是正确的方法。这源于我是一个加密新手这一事实——首先,我什至不知道这个kms_client_encrypt函数是用于加密值(来自列)还是用于操作密钥。也许更好的方法是获取密钥,然后使用一些 python 加密库(例如hashlib)。
我想对加密过程进行一些说明,并建议对列加密的最佳方法是什么。
我们的设置:
我们的假设是所有内容都已正确路由(本地可以看到 AWS 中的 VPC)。我们假设 VPC CIDR 范围为 10.10.10.0/24。
当我们在 SDK 中调用“PutObject”(但可以是任何 S3 方法)并给出存储桶的名称时,SDK 生成的请求将定位到公共 S3 IP 地址 (52.xxx)。但是,这不会路由为:Direct Connect -> VPC -> VPC Endpoint -> S3,相反,我们的路由器会将流量路由到互联网代理(作为默认 0.0.0.0/0 路由) - 因为 VPC CIDR 范围为 10.10.10.0/24。
我的问题(显然)是:是否有正确的方法如何通过 AWS Direct Connect 而不是通过互联网路由流量?
我希望有这样的事情:
免责声明:我并不是真正的网络或 AWS 基础设施专家,所以请原谅我的一些含糊之处。
routes amazon-s3 amazon-web-services amazon-vpc aws-direct-connect
我的任务是连接到Google Drive API(借助PyDrive模块)并下载一些文件。我以某种方式设法使它在本地计算机上正常工作-我在Google控制台上注册了“应用” ,下载了client_secret.json,运行了脚本,弹出了身份验证窗口,我使用自己的Google帐户登录,并且可以访问云端硬盘,一切都没问题。
现在,我想在服务器上使用我的脚本,而我基本上不知道该怎么做。我向提供者提交了支持票,他们的答案是:
您需要获取以下内容:
{
"#authJson": "{"access_token":"XXX","token_type":"Bearer","expires_in":3600,"refresh_token":"YYY","created":1457455916}",
"#appKey": "key",
"#appSecret": "secret"
}
Run Code Online (Sandbox Code Playgroud)
这里#authJson是“whoevers驱动器-你-要对接入的授权和的结果,#appKey一个#appSecret来自的OAuth。
我不知道怎么得到这些。我知道如何下载client_secret.json。所以问题是:如何获得这些?我什至在正确的轨道上吗?或者需要其他方法。
理想的最终状态是:为access_token我的Google云端硬盘提供某种永久性,然后可以将其传递给应用程序(例如,作为字符串参数)。然后,该应用将连接到我的云端硬盘并下载所需的文件。
假设我有以下 Mongo 文档:
{
"_id":1,
"age": 10,
"foo": 20
}
Run Code Online (Sandbox Code Playgroud)
和以下 Spark DataFrame df:
_id | val
1 | 'a'
2 | 'b'
Run Code Online (Sandbox Code Playgroud)
现在我想将val数据帧中的附加到 Mongo 文档中...
使用MongoDB Spark 连接器,我可以通过“_id”附加使用默认的更新插入逻辑,这意味着如果 Spark 数据帧中的“_id”和 Mongo 文档匹配,Mongo 连接器将不会创建新文档,而是更新旧文档。
但!更新的行为基本上类似于替换- 如果我执行以下操作:
df
.write.format("com.mongodb.spark.sql.DefaultSource")
.mode("append")
.option('spark.mongodb.output.uri','mongodb://mongo_server:27017/testdb.test_collection')
.save()
Run Code Online (Sandbox Code Playgroud)
该集合将如下所示:
[
{
"_id":1,
"val": 'a'
},
{
"_id":2,
"val':'b'
}
]
Run Code Online (Sandbox Code Playgroud)
我想得到这个:
[
{
"_id":1,
"age": 10,
"foo": 20
"val": 'a'
},
{
"_id":2,
"val':'b'
}
]
Run Code Online (Sandbox Code Playgroud)
我的问题是: …
python ×2
amazon-s3 ×1
amazon-vpc ×1
apache-spark ×1
aws-kms ×1
encryption ×1
google-api ×1
google-oauth ×1
mongodb ×1
pandas ×1
pydrive ×1
pyspark ×1
routes ×1
ssh-tunnel ×1
upsert ×1