有没有人知道如何console.log's运行aws lambda功能?
当我在其测试环境中运行该函数时它很好,但我想在生产环境中运行它时看到日志.
我试图从AWS Lambda函数返回一个对象而不是一个简单的字符串.
// ...
context.fail({
"email": "Email address is too short",
"firstname": "First name is too short"
});
// ...
Run Code Online (Sandbox Code Playgroud)
我已经使用了errorMessage映射错误响应状态代码,这很好:
// ...
context.fail('That "username" has already been taken.');
// ...
Run Code Online (Sandbox Code Playgroud)
我只是想尝试做一些AWS API Gateway无法承受的事情吗?
我也已经发现这篇文章有所帮助:有没有办法更改Amazon API Gateway返回的http状态代码?.
http amazon-web-services http-response-codes aws-lambda aws-api-gateway
我正在尝试使用下面的 aws cli 命令来调用 lambda 函数。
aws lambda invoke --invocation-type RequestResponse --function-name HelloWorldJava --payload \"world\" outputfile.txt
Run Code Online (Sandbox Code Playgroud)
但我遇到了以下错误。
Invalid base64: ""world""
Run Code Online (Sandbox Code Playgroud)
我所指的书就是使用同样的方法。
我正在抓取一个网站,其中包含格式为root/page_number.html连续page_num整数的页面。如果我爬行太快,网站会阻止我,所以我认为使用 AWS Lambda 爬行是一个好主意,这样每次进行新函数调用时 IP 地址都会不断轮换。
然后我编写了每次只抓取 100 个页面的函数,以确保在具有不同 IP 地址的不同机器上生成许多并行任务。刚开始的时候效果还不错,但是爬了大约10万个页面之后还是被网站屏蔽了。这让我想知道:
我正在尝试使用无服务器框架在 lambda 函数中调用 lambda 函数。我现在正在使用这段代码,部署到 AWS 后它可以正常工作。但它在 serverless-offline 中本地返回一些错误。
我现在使用的代码:
const middy = require("@middy/core");
const httpErrorHandler = require("@middy/http-error-handler");
const httpUrlEncodeBodyParser = require("@middy/http-urlencode-body-parser");
const AWS = require("aws-sdk");
const lambda = new AWS.Lambda();
const baseHandler = async (payload) => {
const params = {
FunctionName: `my-api-${process.env.STAGE}-handleProcessA`,
InvocationType: "Event",
LogType: "None",
Payload: JSON.stringify(payload),
};
await lambda.invoke(params).promise();
return standardResponse();
}
const endpoint = middy(baseHandler)
.use(httpUrlEncodeBodyParser())
.use(httpErrorHandler());
module.exports = { endpoint };
Run Code Online (Sandbox Code Playgroud)
当这个被触发时,它表示找不到该函数:
Function not found: arn:aws:lambda:us-west-2:893853743015:function:my-api-local-handleProcessA
我也尝试了这些问题的建议: /sf/answers/4113647121/ /sf/answers/4897727201/
根据建议,我更改了这部分:
const lambda = new …Run Code Online (Sandbox Code Playgroud) 问题:
\n我正在尝试构建将部署到 AWS Lambda 的 Typescript 代码。然而,在 Aws Sam 构建时,我遇到了标题中提到的错误。以下是确切的错误。
\nBuilding codeuri: D:\\AWS\\demo-app\\hello-world runtime: nodejs16.x metadata: {'BuildMethod': 'esbuild', 'BuildProperties': {'Minify': True, 'Target': 'es2020', 'EntryPoints': ['app.ts']}} architecture: x86_64 functions: HelloWorldFunction\nRunning NodejsNpmEsbuildBuilder:CopySource\nRunning NodejsNpmEsbuildBuilder:NpmInstall\nRunning NodejsNpmEsbuildBuilder:EsbuildBundle\n\nBuild Failed\nError: NodejsNpmEsbuildBuilder:EsbuildBundle - Esbuild Failed: X [ERROR] Could not resolve "aws-sdk"\n\n app.ts:2:21:\n 2 \xe2\x94\x82 import * as AWS from 'aws-sdk';\n \xe2\x95\xb5 ~~~~~~~~~\n\n You can mark the path "aws-sdk" as external to exclude it from the bundle, which will remove this error.\n\n1 error\nchild_process.js:830\n throw err;\n ^\n\nError: Command …Run Code Online (Sandbox Code Playgroud) 我在 2 年前创建了一个 AWS 账户。一段时间后,该帐户被黑客入侵,我与客户支持人员交谈并关闭了该帐户。现在,我想再次开设AWS账户。
我尝试登录,但仪表板显示“不存在此类帐户”。我尝试再次注册,这会将验证码发送到我的 Gmail 帐户,但邮件显示帐户已存在,因此我应该登录。单击登录链接后,我被重定向回登录控制台,其中显示不存在此类帐户。
我现在如何实际创建 AWS 账户?
我正在尝试用 python 创建一个 AWS Lambda:
python-gnupgpython-gnupg这是在 Lambda 层中使用 python 3.8 和包。
我已验证 PGP 密钥是否正确,它是否已正确加载到密钥环中,并且加密文件是否已正确下载。但是,当我尝试运行时,gnupg.decrypt_file我得到的输出看起来好像已经成功,但解密状态显示not ok并且解密的文件不存在。
如何在 Lambda 中进行 PGP 解密?
以下是从 lambda 函数中提取的相关代码:
import gnupg
from pathlib import Path
# ...
gpg = gnupg.GPG(gnupghome='/tmp')
# ...
encrypted_path = '/tmp/encrypted.zip'
decrypted_path = '/tmp/decrypted.zip'
# ...
# this works as expected
status = gpg.import_keys(MY_KEY_DATA)
# ...
print('Performing Decryption of', encrypted_path)
print(encrypted_path, "exists :", Path(encrypted_path).exists())
with open(encrypted_path, 'rb') as f:
status = …Run Code Online (Sandbox Code Playgroud) 在aws cli上切换区域的命令是什么?我想切换到 lambda 所在的另一个区域
我已尝试过这些命令,但它们不起作用
aws --region <region_name>
aws set region <region_name>
aws configure region <region_name>
aws lambda .... --region <region_name>
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个包含 pydantic/pydantic_core (Lambda python 3.11,x86_64)的 lambda 层,但出现以下错误:"Unable to import module 'reddit_lambda': No module named 'pydantic_core._pydantic_core'"
作为上下文,我将其安装在 Windows x64 计算机上。
从这里、这里和这里阅读有关内容,似乎 pip 安装 pydantic 是为了不兼容的体系结构(win_amd64)。
安装日志:
Using cached pydantic-2.4.2-py3-none-any.whl (395 kB)
Using cached pydantic_core-2.10.1-cp311-none-win_amd64.whl (2.0 MB)
Run Code Online (Sandbox Code Playgroud)
我的问题:有没有办法强制 pip 将软件包安装到 powershell 中特定架构的目录中?
我在这里看到了一个旧的讨论,这对于 Linux 来说是可能的,但不知道如何在 powershell 上做到这一点。
仅供参考:我还尝试从二进制文件中添加 pydantic_core (尝试过 pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl和 pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl),但我对选择哪个版本有点困惑?
aws-lambda ×10
aws-cli ×2
node.js ×2
amazon-ec2 ×1
amazon-s3 ×1
aws-sam ×1
gnupg ×1
http ×1
ip-address ×1
pgp ×1
powershell ×1
pydantic ×1
python ×1
python-3.x ×1
typescript ×1
web-scraping ×1