我在AWS Lambda中使用googledrive凭据时遇到问题,在我调用本地机器上的函数之前部署我的.zip文件之后,一切正常,但是我在AWS中部署zip后~30min我有lambda函数错误
"errorMessage": "[Errno 30] Read-only file system: 'drive-python-quickstart.json'",
"errorType": "OSError",
"stackTrace": [
[
"/var/task/lambda_function.py",
33,
"lambda_handler",
"pageSize=10,fields=\"nextPageToken, files(id, name)\").execute()"
],
[
"/var/task/oauth2client/_helpers.py",
133,
"positional_wrapper",
"return wrapped(*args, **kwargs)"
],
[
"/var/task/googleapiclient/http.py",
835,
"execute",
"method=str(self.method), body=self.body, headers=self.headers)"
],
[
"/var/task/googleapiclient/http.py",
162,
"_retry_request",
"resp, content = http.request(uri, method, *args, **kwargs)"
],
[
"/var/task/oauth2client/transport.py",
186,
"new_request",
"credentials._refresh(orig_request_method)"
],
[
"/var/task/oauth2client/client.py",
761,
"_refresh",
"self._do_refresh_request(http)"
],
[
"/var/task/oauth2client/client.py",
802,
"_do_refresh_request",
"self.store.locked_put(self)"
],
[
"/var/task/oauth2client/file.py",
79,
"locked_put",
"f = open(self._filename, 'w')"
]
]
}
Run Code Online (Sandbox Code Playgroud)
在文件file.py我有这个代码:
def …Run Code Online (Sandbox Code Playgroud) python lambda amazon-web-services google-drive-api aws-lambda
我正在尝试编写一个脚本,在Jenkins的帮助下将查看git中的更新文件,下载并使用AWS KMS加密它们.我有一个工作脚本,可以完成所有工作,并将文件下载到本地服务器上的Jenkins存储库.但我的问题是在Jenkins repo中加密这个文件.基本上,当我加密本地计算机上的文件时,我使用命令:
aws kms encrypt --key-id xxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxx --plaintext fileb://file.json --output text --query CiphertextBlob | base64 --decode > Encrypted-data.json
Run Code Online (Sandbox Code Playgroud)
并且一切正常,但如果我尝试使用Jenkins,我会收到AWS命令未找到的错误.
有人知道如何解决这个问题,我如何通过Jenkins运行AWS?这是我的工作代码,它在最后一行分解:
bom_sniffer() {
head -c3 "$1" | LC_ALL=C grep -qP '\xef\xbb\xbf';
if [ $? -eq 0 ]
then
echo "BOM SNIFFER DETECTED BOM CHARACTER IN FILE \"$1\""
exit 1
fi
}
check_rc() {
# exit if passed in value is not = 0
# $1 = return code
# $2 = command …Run Code Online (Sandbox Code Playgroud) 我对grep命令有一个问题。在我的脚本中,我使用:
"ServicePassword":fooooooooooo
"ServiceUserName":barrrrrrrrr
grep -E '"ServiceUserName"|"ServicePassword"' >> user.txt
Run Code Online (Sandbox Code Playgroud)
但是在user.txt文件中,我将首先获取“ ServicePassword”:fooooooooooo,然后获取“ ServiceUserName”:barrrrrrrrr我如何使用grep命令将其反向以获取user.txt文件中的第一个ServiceUserName然后ServicePassword输出?我只需要这个顺序。我尝试更改:
grep -E '""ServicePassword""|"ServiceUserName"' >> user.txt
Run Code Online (Sandbox Code Playgroud)
什么都没有...。也许存在更好的解决方案?
我有git commit hook script,他检查提交输入消息,如果消息不包含单词“ updated”,则脚本拒绝提交。
#!/bin/bash
read -p "Enter a commit message: " message
if [[ ${message} != *"updated"* ]];then
echo "Your commit message must contain the word 'updated'"
else
git commit -m "$message"
fi
Run Code Online (Sandbox Code Playgroud)
如果我尝试用以下消息将本地文件中的某些文件推送到git commit -m“ updated:something”中,如何使此挂钩自动执行,我的想法是使其不像“运行此脚本来进行提交”,但是然后打开控制台并尝试通过键入commant进行提交,脚本将自动检查您的提交消息并通过或拒绝。
我正在尝试从ANTLR开始。当我导入模块时antlr它工作得很好,但是如果我尝试导入MyGrammarLexer和MyGrammarParser,它表明 MyGrammarLexer 和 Parser 不在 lib 中。我使用 PyCharm ,安装了 ANTLR: pip3 install antlr4-python3-runtime我的代码是:
import sys
from antlr4 import *
import MyGrammarLexer
import MyGrammarParser
def main(argv):
input = FileStream(argv[1])
lexer = MyGrammarLexer(input)
stream = CommonTokenStream(lexer)
parser = MyGrammarParser(stream)
tree = parser.startRule()
if __name__ == '__main__':
main(sys.argv)
Run Code Online (Sandbox Code Playgroud)
也许谁知道为什么我无法导入 MyGrammarLexer 和 MyGrammarParser?请建议!反击:
/usr/bin/python3.6 /home/andrejka/PycharmProjects/Parser/parser.py
Traceback (most recent call last):
File "/home/andrejka/PycharmProjects/Parser/parser.py", line 2, in <module>
from antlr4 import *
File "/usr/lib/python3/dist-packages/antlr4/__init__.py", line 5, in <module> …Run Code Online (Sandbox Code Playgroud)