在 AWS Lambda 中运行 P4Python

问题描述 投票:0回答:1

我正在编写一个应用程序,它从 Perforce 检索更改列表,并列出所有已更改的文件。

我想在 AWS Lambda 上部署它,但每当它运行时,我都会收到以下错误:

The authenticity of 'xxx.xxx.xxx.xxx:1666' can't be established,
this may be your first attempt to connect to this P4PORT.
The fingerprint for the key sent to your client is 'xx:xx:....
To allow connection use the 'p4 trust' command.'

这是我的Python代码:

### Create the P4 instance
p4 = P4()                        
p4.port = P4PORT
p4.user = P4USER
p4.password = P4PASSWD
p4.client = P4CLIENT

### Connect
connection = p4.connect()   
print(f'Connection established. {connection}')
trust = p4.run_trust( '-i', P4FINGERPRINT )     
print(f'Trust succeeded... {trust}')

### Logging in...
p4.run_login()

从日志中我确实看到连接已建立并且信任命令成功

Connection established. P4 [xx@xx_main ssl:xx.xx.xx.xx:1666] connected

Trust succeeded... ["The fingerprint of the server of your P4PORT setting\n'ssl:xx.xx.xx.xx:1666' is not known.\nThat fingerprint is xx:xx:xx.....\n", "Added trust for P4PORT 'ssl:xx.xx.xx.xx:1666'\n"]

但是,当运行

p4.run_login()
命令时,我再次收到上述错误。我怀疑,由于它在 AWS Lambda 上运行,因此它没有创建
.p4trust
文件的权限,这意味着它永远无法建立信任。

有人尝试过这个吗?有什么建议/帮助吗?

谢谢。

编辑:我应该补充一点,当运行与本地 docker 容器相同的代码时,会在根目录下创建

.p4trust
文件,并且应用程序的其余部分可以顺利运行。

amazon-web-services ssl aws-lambda perforce p4python
1个回答
0
投票

看起来 p4 期望 .p4trust 文件默认位于用户的主目录中。在 AWS Lambda 环境中这是不可能的,因为您只能写入

/tmp
目录。

但是,我认为您可以创建一个环境变量

P4TRUST
指向 .p4trust 文件的备用位置。您可以在 Lambda 函数配置中将其设置为
/tmp/.p4trust

由于 AWS Lambda 的本质,无法保证

/tmp
的内容在 Lambda 调用中持续存在,因此您应该考虑在实例外持久保存文件(例如,在 S3 中进行加密和访问限制),然后根据需要将其恢复调用 Lambda 函数时的 Lambda 环境。

© www.soinside.com 2019 - 2024. All rights reserved.