小编mLC*_*mLC的帖子

GCP:您没有足够的权限通过 SSH 连接到此实例

我在一个 GCP 项目上有一个(非管理员)帐户。

当我启动 Dataproc 集群时,GCP 会启动 3 个虚拟机。当我尝试通过SSH(在浏览器中)访问其中一个 VM 时,出现以下错误:

在此处输入图片说明

我尝试添加推荐的权限,但无法添加iam.serviceAccounts.actAs权限。

在此处输入图片说明

知道如何解决这个问题吗?我通读了 GCP 文档,但找不到解决方案。我有以下与我的帐户相关联的角色:

在此处输入图片说明

ssh-tunnel google-cloud-console google-cloud-platform google-cloud-dataproc

5
推荐指数
2
解决办法
4210
查看次数

如何使用 AWS KMS 加密 Pandas/Spark 数据帧中的列

我想对我的 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)。

我想对加密过程进行一些说明,并建议对列加密的最佳方法是什么。

encryption pandas pyspark aws-kms

5
推荐指数
1
解决办法
1858
查看次数

使用 AWS SDK 通过 Direct Connect、VPC 和 VPC 终端节点从本地环境访问 AWS S3

我们的设置:

  • 我们有一个本地服务器,我们希望将数据发送到 S3(使用 AWS Java SDK)
  • 我们的本地数据中心使用 Direct Connect 连接到 AWS
  • 在AWS方面,有一个VPC确实有一个到S3的VPC端点

在此输入图像描述

我们的假设是所有内容都已正确路由(本地可以看到 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 而不是通过互联网路由流量

我希望有这样的事情:

  • SDK 命令中有一个选项可以包含请求应首先发送到的其他 IP
  • 我们可以启动一些 S3 本地服务
  • 在一些涉及的服务中有一个简单的按钮可以按下。

免责声明:我并不是真正的网络或 AWS 基础设施专家,所以请原谅我的一些含糊之处。

routes amazon-s3 amazon-web-services amazon-vpc aws-direct-connect

5
推荐指数
1
解决办法
8759
查看次数

Python:Google云端硬盘认证

我的任务是连接到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云端硬盘提供某种永久性,然后可以将其传递给应用程序(例如,作为字符串参数)。然后,该应用将连接到我的云端硬盘并下载所需的文件。

python google-api google-drive-api google-oauth pydrive

2
推荐指数
1
解决办法
1189
查看次数

Spark Mongo 连接器:在 MongoDB 连接中仅更新一个属性

假设我有以下 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 upsert mongodb apache-spark

1
推荐指数
1
解决办法
1642
查看次数