我试图将处理后的图像暂时保存在 /tmp 文件夹中,但它对我不起作用。假设它位于根文件夹下,我尝试以这种方式获取它:
let tempraryImageDirectory: string;
if (process.env.DEV && process.env.DEV === 'Yes') {
tempraryImageDirectory = path.join(__dirname, `../../tmp/`);
} else {
tempraryImageDirectory = path.join(__dirname, `./tmp/`);
}
Run Code Online (Sandbox Code Playgroud)
这里选择else的是本地测试。我不想在根目录中创建 /tmp 文件夹。当地一切都很好。但目前在 Lambda 中,目录 CloudWatch 上发生的任何操作都不会显示此后写入的任何日志,并且我的函数因未知原因而失败。知道我是否正确寻址 /tmp 文件夹吗?
我有一个订阅 SQS 队列来处理消息的 lambda。消息量非常大。
问题:队列增长非常快,并且 lambda 函数无法横向扩展以足够快地处理消息。尽管我还有 950 个或更多未使用的 lambda 执行的剩余配额,但并发 lambda 执行最多只有 20 到 25 个。为什么它不启动更多 lambda 来更快地处理我的队列?这是可配置的吗?
这是我的应用程序中的一个问题,因为我使用的是标准 SQS 队列,它不提供排序保证。因此,有时我会看到不幸的消息在队列中被吸了几个小时,而有些消息则在不到一分钟的时间内得到处理。(顺便说一句,我对队列可以按如此随机的顺序进行处理感到非常震惊。即使没有顺序保证,我也不会想到它会这么糟糕)。
我正在尝试从 java lambda 函数连接到 DynamoDB,它在本地使用 aws profile ~/.aws/credentials。由于我无法在凭证文件中设置配置文件详细信息,这在 AWS 环境中将如何工作?
private static AmazonDynamoDB dynamoClient = AmazonDynamoDBClientBuilder.standard()
.withEndpointConfiguration(
new AwsClientBuilder.EndpointConfiguration("https://dynamodb.us-west-2.amazonaws.com", "us-west-2"))
.withCredentials(new EnvironmentVariableCredentialsProvider()).build();
Run Code Online (Sandbox Code Playgroud) 我在 AWS 文档中找不到我想要的任何答案。
是否可以执行 100,000 个(大约)Step Functions 并且状态等待 3 个月?等待状态每30分钟检查一次,否则2个月后退出状态。
等待状态将执行 lambda 函数 - 它将在继续下一个状态之前检查字段 (dynamodb) 是否匹配条件。
我想知道有没有什么限制?
如果 WAIT 状态不是好方法,有什么替代方法?
当我尝试从 S3 删除事件通知时,收到以下消息:
在文本中:
无法验证以下目标配置。无权调用函数 [arn:aws:lambda:eu-west-1:FOOBAR:function:FOOBAR]。(arn:aws:lambda:eu-west-1:FOOBAR:函数:FOOBAR,空)
我的组织中似乎没有人能够删除它 - 甚至管理员也不能。
当我尝试通过 Web 界面在 AWS Lambda 中设置相同的 S3 事件通知作为触发器时,我得到
配置定义不明确。如果同一事件类型的前缀重叠,则两个规则中不能有重叠的后缀。(服务:Amazon S3;状态代码:400;错误代码:InvalidArgument;请求 ID:FOOBAR;S3 扩展请求 ID:FOOBAR/FOOBAR/FOOBAR)
如何删除现有的事件通知?我怎样才能进一步调查这个问题?
我在 python 中有一个 AWS Lamba 函数,它使用 shell 脚本生成 url。shell脚本的输入参数由python代码提供。shell 脚本使用 perl 对所需的 URL 进行 URL 编码。MURI当我在本地运行时,该脚本运行良好;但是在 AWSamba 上看起来好像没有安装perl 。如果有其他方法可以做到这一点或有任何其他建议,我将不胜感激。我正在通过以下命令进行 URL 编码。我在 lambda 日志中看到的错误是:
Can't locate URI/Escape.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .).
BEGIN failed--compilation aborted.
Run Code Online (Sandbox Code Playgroud)
脚本中的代码是
cred=$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$PARM1/$DATE/$PUBLIC_REGION/$SERVICE_NAME/request")
FULLDT=$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$FULLDT")
SESSION_TOKEN=$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$SESSION_TOKEN")
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 python 3.7.2 和 aiobotocore 包执行多个 AWS Lambda 调用。这是我的代码。
import asyncio
import aiobotocore
async def invoke(payload, session):
async with session.create_client('lambda', region_name='us-east-1') as client:
return await client.invoke(FunctionName='MY_FUNCTION', Payload=payload)
def generate_invocations(payloads, session):
for payload in payloads:
yield invoke(payload, session)
def invoke_all(payloads):
loop = asyncio.get_event_loop()
async def wrapped():
session = aiobotocore.get_session(loop=loop)
invocations = generate_invocations(payloads, session)
return await asyncio.gather(*invocations)
return loop.run_until_complete(wrapped())
def main():
payloads_list = [] # MY PAYLOADS LIST
lambda_responses = invoke_all(payloads_list)
print(lambda_responses)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
代码运行速度非常快(10 个有效负载大约 1 秒,而不是使用 boto3 …
我试图通过 AWS 命令在 aws 中创建 lambda 函数。当我执行命令时,出现以下错误。但是我在 AWS 命令中提到的角色有足够的权限来部署 lambda 函数。即使角色有权限,我也不确定出了什么问题。
命令:
aws lambda create-function --function-name ukmon-appd-disabled-
health-rules --runtime python3.7 --zip-file
fileb://bin/disabled_health_rules.zip --handler index.handler --timeout 10 -
-memory-size 1024 --role arn:aws:iam::99999999999:role/crossaccount
Run Code Online (Sandbox Code Playgroud)
政策:
"AllowLambdaFunctionStack": {
"Type": "AWS::IAM::ManagedPolicy",
"Properties": {
"Description": "Policy for allowing jenkins cross account service role to create, update, delete lambda functions.",
"Path": "/",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"lambda:InvokeFunction",
"lambda:CreateFunction",
"lambda:DeleteFunction",
"lambda:GetFunction",
"lambda:ListFunctions",
"lambda:UpdateFunctionCode",
"lambda:GetFunctionConfiguration",
"lambda:UpdateFunctionConfiguration",
"lambda:AddPermission",
"lambda:RemovePermission",
"lambda:CreateAlias",
"lambda:DeleteAlias",
"lambda:GetAlias",
"lambda:ListAliases",
"lambda:UpdateAlias",
"lambda:GetPolicy", …Run Code Online (Sandbox Code Playgroud) 我目前在 AWS Lambda 上使用 Zappa/Flask (Py 3.7) 有一个 API
我的 zappa_Settings.json 文件如下所示:
{
"beta": {
"app_function": "application.application",
"profile_name": "changed",
"project_name": "changed",
"runtime": "python3.7",
"s3_bucket": "zappa-<obscured>"
}
}
Run Code Online (Sandbox Code Playgroud)
然而,我们现在正在开发一组新的功能,并且感觉表明我们有一个单独的分支或阶段,例如“测试”,我们在部署这些功能并评估成熟度之前将其推入实时环境。
问题是,尽我所能,我无法从控制台创建新阶段:
zappa init
Run Code Online (Sandbox Code Playgroud)
崩溃与
click.exceptions.ClickException:该项目已经有一个 zappa_settings.json 文件!
zappa init stage2
Run Code Online (Sandbox Code Playgroud)
产生
用法:zappa [-h] [-v] [--color {auto,never,always}] {认证,部署,init,包,模板,调用,管理,回滚,计划,状态,尾部,取消部署,取消计划,更新,shell} ... zappa:错误:无法识别的参数:stage2
zappa deploy stage2
Run Code Online (Sandbox Code Playgroud)
输出
(botocore 1.12.86 (/home/user/Code/Python/project/lib/python3.6/site-packages), Requirement.parse('botocore<1.11.0,>=1.10.82'), {'boto3'})
Calling deploy for stage stage2..
Error: Please define stage 'stage2' in your Zappa settings.
Run Code Online (Sandbox Code Playgroud)
现在,如果我手动为阶段创建条目,则需要有一个 s3 存储桶用于部署。重复使用与第一个实例相同的实例是否安全?我在这里要做什么来部署新阶段?
我正在 Python 中创建一个 Lambda 函数,该函数通过将 MP3 文件上传到我的 S3 存储桶来触发。该函数(在我的本地计算机上运行)应该使用 pydub 从音频创建波形,但是,我遇到了一个我不知道如何解决的问题。
似乎我能够将文件保存到该/tmp文件夹,但是当我尝试将文件传递到 时AudioSegment.from_file(filename),该函数结束并且 CloudWatch 中没有错误日志。
这是相关的代码块:
s3.download_file(bucket_name, file_key, '/tmp/temp.mp3')
src = "/tmp/temp.mp3"
try:
print 'trying...'
audio = AudioSegment.from_file(src)
except:
print 'its breaking'
print 'it worked'
Run Code Online (Sandbox Code Playgroud)
我将问题行包装在一个try块中以简化问题。CloudWatch 仅记录:
START RequestId: 23af8832-061b-4c46-a226-6591bb972b5e Version: $LATEST
trying...
END RequestId: 23af8832-061b-4c46-a226-6591bb972b5e
Run Code Online (Sandbox Code Playgroud)
预期输出为:
START RequestId: 23af8832-061b-4c46-a226-6591bb972b5e Version: $LATEST
trying...
its breaking || it worked
END RequestId: 23af8832-061b-4c46-a226-6591bb972b5e
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
任何帮助将不胜感激!:)
aws-lambda ×10
amazon-s3 ×2
amazon-sqs ×1
java ×1
node.js ×1
perl ×1
pydub ×1
python ×1
python-3.7 ×1
python-3.x ×1
python-zappa ×1
sh ×1
typescript ×1
zappa ×1