我想使用 Deployment Manager 在 GCP 中部署 Cloud VPN 隧道
为此,我使用 Python 设置了一个部署脚本,并且我不希望在我的配置中以纯文本形式共享 VPN 隧道的密钥。
所以我尝试包含通过KMS加密的秘密,然后在 python 脚本中调用 KMS 以获取纯文本秘密。
解密秘密的 python 代码如下所示:
import base64
import googleapiclient.discovery
def decryptSecret(enc_secret,context):
""" decrypts the given Secret via KMS"""
# KMS Configuration
KEY_RING = <Key Ring>
KEY_ID = <Key>
KEY_LOCATION = REGION
KEY_PROJECT = context.env['project'],
# Creates an API client for the KMS API.
kms_client = googleapiclient.discovery.build('cloudkms', 'v1')
key_name = 'projects/{}/locations/{}/keyRings/{}/cryptoKeys/{}'.format(
KEY_PROJECT, KEY_LOCATION, KEY_RING, KEY_ID)
crypto_keys = kms_client.projects().locations().keyRings().cryptoKeys()
request = crypto_keys.decrypt(
name=key_name,
body={'ciphertext': enc_secret})
response = request.execute()
plaintext = base64.b64decode(response['plaintext'].encode('ascii'))
return plaintext
但是,如果我部署此代码,我只会从部署管理器中收到以下错误消息:
Waiting for update [operation-<...>]...failed.
ERROR: (gcloud.deployment-manager.deployments.update) Error in Operation [operation-1517326129267-5640004f18139-450d8883-8d57c3ff]: errors:
- code: MANIFEST_EXPANSION_USER_ERROR
message: |
Manifest expansion encountered the following errors: Error compiling Python code: No module named googleapiclient.discovery Resource: cloudvpn-testenv.py Resource: config
我还尝试在我的配置 yaml 中包含完整的 google-api-python-client 库,但我仍然收到此错误。
有人知道吗?